Chapter 15 Faecal Microbiota Transplantation (FMT)

15.1 Does FMT change the microbial community over time?

15.1.1 Alpha diversity

sample_metadata <- sample_metadata %>%
  mutate(treatment=time_point) %>% 
    mutate(treatment=case_when(
    treatment %in% c("Donor1", "Donor2") ~ "Inoculum",
    TRUE ~ treatment
  ))

alpha_div_meta <- alpha_div %>%
  left_join(sample_metadata, by = join_by(sample == sample))%>%
  filter(type == "Cold_intervention" & treatment %in% c("FMT1","FMT2") ) 
alpha_div %>%
  pivot_longer(-sample, names_to = "metric", values_to = "value") %>%
  left_join(., sample_metadata, by = "sample") %>%
  mutate(metric=factor(metric,levels=c("richness","neutral", "phylogenetic"))) %>%
  filter(type=="Cold_intervention" & treatment %in% c("FMT1", "FMT2")) %>% 
  ggplot(aes(y = value, x = treatment, color=treatment, fill=treatment)) +
  geom_boxplot(width = 0.5,alpha=0.5 ,outlier.shape = NA, show.legend = FALSE) +
  geom_jitter(width = 0.2, show.legend = FALSE) +
  scale_color_manual(values=c("#76b183", '#40714b50')) +
  scale_fill_manual(values=c("#76b183", '#40714b50')) +
  facet_wrap( ~ metric, scales = "free")+
  theme_classic() +
  theme(
    strip.background = element_blank(),
    panel.grid.minor.x = element_line(size = .1, color = "grey"),
    axis.text = element_text(size = 12),
    axis.title.y = element_text(size = 14),
    axis.title.x = element_blank(),
    strip.text = element_text(size = 16, lineheight = 0.6)
      )  +
  ylab("Alpha diversity")

Richness

Modelq0GLMMNB <- glmer.nb(richness ~ treatment+(1|individual), data = alpha_div_meta)
summary(Modelq0GLMMNB)
Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
 Family: Negative Binomial(4.3157)  ( log )
Formula: richness ~ treatment + (1 | individual)
   Data: alpha_div_meta

     AIC      BIC   logLik deviance df.resid 
   171.5    174.8    -81.7    163.5       13 

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-1.72426 -0.71683 -0.08993  0.38000  1.84050 

Random effects:
 Groups     Name        Variance Std.Dev.
 individual (Intercept) 0        0       
Number of obs: 17, groups:  individual, 9

Fixed effects:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)     3.9416     0.1772  22.247   <2e-16 ***
treatmentFMT2   0.4080     0.2420   1.686   0.0918 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr)
tretmntFMT2 -0.732
optimizer (Nelder_Mead) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

Neutral

Model_neutral <- nlme::lme(fixed = neutral ~ treatment, data = alpha_div_meta,
               random = ~ 1 | individual)
summary(Model_neutral)
Linear mixed-effects model fit by REML
  Data: alpha_div_meta 
      AIC      BIC   logLik
  129.347 132.1792 -60.6735

Random effects:
 Formula: ~1 | individual
        (Intercept) Residual
StdDev:    3.521142 11.47471

Fixed effects:  neutral ~ treatment 
                 Value Std.Error DF  t-value p-value
(Intercept)   24.81671  4.241888  8 5.850393  0.0004
treatmentFMT2 15.06479  5.589803  7 2.695048  0.0309
 Correlation: 
              (Intr)
treatmentFMT2 -0.701

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-1.75054530 -0.55659466 -0.07097174  0.51610612  1.27053535 

Number of Observations: 17
Number of Groups: 9 

Phylogenetic

Model_phylo <- nlme::lme(fixed = phylogenetic ~ treatment, data = alpha_div_meta,
               random = ~ 1 | individual)
summary(Model_phylo)
Linear mixed-effects model fit by REML
  Data: alpha_div_meta 
       AIC      BIC    logLik
  56.31055 59.14275 -24.15527

Random effects:
 Formula: ~1 | individual
        (Intercept)  Residual
StdDev:   0.7045591 0.8405942

Fixed effects:  phylogenetic ~ treatment 
                 Value Std.Error DF   t-value p-value
(Intercept)   4.176014 0.3840968  8 10.872296  0.0000
treatmentFMT2 0.933438 0.4133828  7  2.258048  0.0585
 Correlation: 
              (Intr)
treatmentFMT2 -0.582

Standardized Within-Group Residuals:
       Min         Q1        Med         Q3        Max 
-1.1450921 -0.5911576 -0.1410070  0.4851316  2.3184128 

Number of Observations: 17
Number of Groups: 9 

15.1.2 Beta diversity

samples_to_keep <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("FMT1", "FMT2")) %>% 
  select(sample) %>% 
  pull()
subset_meta <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("FMT1", "FMT2"))

Richness

richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
               colnames(richness) %in% samples_to_keep])

betadisper(richness, subset_meta$treatment) %>% permutest(.) 

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq   Mean Sq      F N.Perm Pr(>F)  
Groups     1 0.017295 0.0172950 2.8289    999  0.093 .
Residuals 15 0.091706 0.0061137                       
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(richness ~ treatment,
        data = subset_meta %>% arrange(match(sample,labels(richness))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(sample,labels(richness))) %>% pull(individual)) %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
Model 1 0.3571397 0.07959561 1.297184 0.00390625
Residual 15 4.1297869 0.92040439 NA NA
Total 16 4.4869265 1.00000000 NA NA

Neutral

neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
               colnames(neutral) %in% samples_to_keep])

betadisper(neutral, subset_meta$treatment) %>% permutest(.) 

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq   Mean Sq      F N.Perm Pr(>F)
Groups     1 0.009753 0.0097526 0.7091    999   0.42
Residuals 15 0.206312 0.0137541                     
adonis2(neutral ~ treatment,
        data = subset_meta %>% arrange(match(sample,labels(neutral))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(sample,labels(neutral))) %>% pull(individual)) %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
Model 1 0.3157079 0.08117526 1.325203 0.00390625
Residual 15 3.5735051 0.91882474 NA NA
Total 16 3.8892130 1.00000000 NA NA

Phylogenetic

phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
               colnames(phylo) %in% samples_to_keep])
betadisper(phylo, subset_meta$treatment) %>% permutest(.) 

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq  Mean Sq      F N.Perm Pr(>F)
Groups     1 0.010945 0.010944 0.6593    999  0.542
Residuals 15 0.248985 0.016599                     
adonis2(phylo ~ treatment,
        data = subset_meta %>% arrange(match(sample,labels(phylo))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(sample,labels(phylo))) %>% pull(individual)) %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
Model 1 0.06393539 0.09448624 1.565182 0.0703125
Residual 15 0.61272811 0.90551376 NA NA
Total 16 0.67666350 1.00000000 NA NA

NMDS

richness %>%
  vegan::metaMDS(., trymax = 500, k = 2, trace=0) %>%
  vegan::scores() %>%
  as_tibble(., rownames = "sample") %>%
  dplyr::left_join(subset_meta, by = join_by(sample == sample)) %>%
  group_by(treatment) %>%
  mutate(x_cen = mean(NMDS1, na.rm = TRUE)) %>%
  mutate(y_cen = mean(NMDS2, na.rm = TRUE)) %>%
  ungroup() %>%
  ggplot(aes(x = NMDS1, y = NMDS2, color = treatment)) +
  geom_point(size = 4) +
  scale_color_manual(name="Time point",values=c("#76b183", '#40714b50')) +
  geom_segment(aes(x = x_cen, y = y_cen, xend = NMDS1, yend = NMDS2), alpha = 0.9, show.legend = FALSE) +
  theme(
    axis.title = element_text(size = 12, face = "bold"),
    axis.text = element_text(size = 10),
    panel.background = element_blank(),
    axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
    legend.text = element_text(size = 10),
    legend.title = element_text(size = 12),
    legend.position = "right", legend.box = "vertical"
    )

neutral %>%
  vegan::metaMDS(., trymax = 500, k = 2, trace=0) %>%
  vegan::scores() %>%
  as_tibble(., rownames = "sample") %>%
  dplyr::left_join(subset_meta, by = join_by(sample == sample)) %>%
  group_by(treatment) %>%
  mutate(x_cen = mean(NMDS1, na.rm = TRUE)) %>%
  mutate(y_cen = mean(NMDS2, na.rm = TRUE)) %>%
  ungroup() %>%
  ggplot(aes(x = NMDS1, y = NMDS2, color = treatment)) +
  geom_point(size = 4) +
  scale_color_manual(name="Time point",values=c("#76b183", '#40714b50')) +  
  geom_segment(aes(x = x_cen, y = y_cen, xend = NMDS1, yend = NMDS2), alpha = 0.9, show.legend = FALSE) +
  theme(
    axis.title = element_text(size = 12, face = "bold"),
    axis.text = element_text(size = 10),
    panel.background = element_blank(),
    axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
    legend.text = element_text(size = 10),
    legend.title = element_text(size = 12),
    legend.position = "right", legend.box = "vertical"
    )

phylo %>%
  vegan::metaMDS(., trymax = 500, k = 2, trace=0) %>%
  vegan::scores() %>%
  as_tibble(., rownames = "sample") %>%
  dplyr::left_join(subset_meta, by = join_by(sample == sample)) %>%
  group_by(treatment) %>%
  mutate(x_cen = mean(NMDS1, na.rm = TRUE)) %>%
  mutate(y_cen = mean(NMDS2, na.rm = TRUE)) %>%
  ungroup() %>%
  ggplot(aes(x = NMDS1, y = NMDS2, color = treatment)) +
  geom_point(size = 4) +
  scale_color_manual(name="Time point",values=c("#76b183", '#40714b50')) +
  geom_segment(aes(x = x_cen, y = y_cen, xend = NMDS1, yend = NMDS2), alpha = 0.9, show.legend = FALSE) +
  theme(
    axis.title = element_text(size = 12, face = "bold"),
    axis.text = element_text(size = 10),
    panel.background = element_blank(),
    axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
    legend.text = element_text(size = 10),
    legend.title = element_text(size = 12),
    legend.position = "right", legend.box = "vertical"
    )

15.2 Do FMT change the microbial community compared to antibiotics and acclimation?

alpha_div_meta <- alpha_div %>%
  left_join(sample_metadata, by = join_by(sample == sample))%>%
  filter(type == "Cold_intervention" & treatment %in% c("Antibiotics", "Acclimation","FMT1","FMT2") ) 

15.2.1 Alpha diversity

Richness

# Modelq0GLMMNB <- glmer.nb(richness ~ treatment + (1|individual), data = alpha_div_meta)
# summary(Modelq0GLMMNB)
#emmeans(Modelq0GLMMNB, pairwise ~ treatment)

model_nb <- MASS::glm.nb(richness ~ treatment, data = alpha_div_meta)
summary(model_nb)

Call:
MASS::glm.nb(formula = richness ~ treatment, data = alpha_div_meta, 
    init.theta = 2.267478601, link = log)

Coefficients:
                     Estimate Std. Error z value Pr(>|z|)    
(Intercept)            3.8140     0.2268  16.814   <2e-16 ***
treatmentAntibiotics  -1.0895     0.3388  -3.216   0.0013 ** 
treatmentFMT1          0.1275     0.3302   0.386   0.6993    
treatmentFMT2          0.5355     0.3192   1.678   0.0934 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Negative Binomial(2.2675) family taken to be 1)

    Null deviance: 58.599  on 33  degrees of freedom
Residual deviance: 37.469  on 30  degrees of freedom
AIC: 323.67

Number of Fisher Scoring iterations: 1

              Theta:  2.267 
          Std. Err.:  0.586 

 2 x log-likelihood:  -313.673 
emmeans(model_nb, pairwise ~ treatment)
$emmeans
 treatment   emmean    SE  df asymp.LCL asymp.UCL
 Acclimation   3.81 0.227 Inf      3.37      4.26
 Antibiotics   2.72 0.252 Inf      2.23      3.22
 FMT1          3.94 0.240 Inf      3.47      4.41
 FMT2          4.35 0.225 Inf      3.91      4.79

Results are given on the log (not the response) scale. 
Confidence level used: 0.95 

$contrasts
 contrast                  estimate    SE  df z.ratio p.value
 Acclimation - Antibiotics    1.089 0.339 Inf   3.216  0.0071
 Acclimation - FMT1          -0.128 0.330 Inf  -0.386  0.9804
 Acclimation - FMT2          -0.536 0.319 Inf  -1.678  0.3355
 Antibiotics - FMT1          -1.217 0.348 Inf  -3.500  0.0026
 Antibiotics - FMT2          -1.625 0.337 Inf  -4.818  <.0001
 FMT1 - FMT2                 -0.408 0.329 Inf  -1.241  0.6004

Results are given on the log (not the response) scale. 
P value adjustment: tukey method for comparing a family of 4 estimates 

Neutral

Model_neutral <- lme(fixed = neutral ~ treatment, data = alpha_div_meta,
               random = ~ 1 | individual)
summary(Model_neutral)
Linear mixed-effects model fit by REML
  Data: alpha_div_meta 
       AIC      BIC    logLik
  243.2135 251.6207 -115.6068

Random effects:
 Formula: ~1 | individual
        (Intercept) Residual
StdDev:    4.655396 9.025318

Fixed effects:  neutral ~ treatment 
                         Value Std.Error DF   t-value p-value
(Intercept)          17.398983  3.385083 22  5.139899  0.0000
treatmentAntibiotics -9.707909  4.404610 22 -2.204034  0.0383
treatmentFMT1         7.165981  4.404610 22  1.626927  0.1180
treatmentFMT2        22.482511  4.254575 22  5.284313  0.0000
 Correlation: 
                     (Intr) trtmnA trFMT1
treatmentAntibiotics -0.607              
treatmentFMT1        -0.607  0.465       
treatmentFMT2        -0.628  0.483  0.483

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-2.19758428 -0.47944101 -0.03077563  0.31591722  1.64995087 

Number of Observations: 34
Number of Groups: 9 
emmeans(Model_neutral, pairwise ~ treatment)
$emmeans
 treatment   emmean   SE df lower.CL upper.CL
 Acclimation  17.40 3.39  8    9.593     25.2
 Antibiotics   7.69 3.57  8   -0.546     15.9
 FMT1         24.56 3.57  8   16.328     32.8
 FMT2         39.88 3.39  8   32.075     47.7

Degrees-of-freedom method: containment 
Confidence level used: 0.95 

$contrasts
 contrast                  estimate   SE df t.ratio p.value
 Acclimation - Antibiotics     9.71 4.40 22   2.204  0.1533
 Acclimation - FMT1           -7.17 4.40 22  -1.627  0.3848
 Acclimation - FMT2          -22.48 4.25 22  -5.284  0.0001
 Antibiotics - FMT1          -16.87 4.55 22  -3.704  0.0063
 Antibiotics - FMT2          -32.19 4.40 22  -7.308  <.0001
 FMT1 - FMT2                 -15.32 4.40 22  -3.477  0.0107

Degrees-of-freedom method: containment 
P value adjustment: tukey method for comparing a family of 4 estimates 
Model_neutral <- lme(fixed = neutral ~ treatment, data = alpha_div_meta,
               random = ~ 1 | individual)
summary(Model_neutral)
Linear mixed-effects model fit by REML
  Data: alpha_div_meta 
       AIC      BIC    logLik
  243.2135 251.6207 -115.6068

Random effects:
 Formula: ~1 | individual
        (Intercept) Residual
StdDev:    4.655396 9.025318

Fixed effects:  neutral ~ treatment 
                         Value Std.Error DF   t-value p-value
(Intercept)          17.398983  3.385083 22  5.139899  0.0000
treatmentAntibiotics -9.707909  4.404610 22 -2.204034  0.0383
treatmentFMT1         7.165981  4.404610 22  1.626927  0.1180
treatmentFMT2        22.482511  4.254575 22  5.284313  0.0000
 Correlation: 
                     (Intr) trtmnA trFMT1
treatmentAntibiotics -0.607              
treatmentFMT1        -0.607  0.465       
treatmentFMT2        -0.628  0.483  0.483

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-2.19758428 -0.47944101 -0.03077563  0.31591722  1.64995087 

Number of Observations: 34
Number of Groups: 9 
emmeans(Model_neutral, pairwise ~ treatment)
$emmeans
 treatment   emmean   SE df lower.CL upper.CL
 Acclimation  17.40 3.39  8    9.593     25.2
 Antibiotics   7.69 3.57  8   -0.546     15.9
 FMT1         24.56 3.57  8   16.328     32.8
 FMT2         39.88 3.39  8   32.075     47.7

Degrees-of-freedom method: containment 
Confidence level used: 0.95 

$contrasts
 contrast                  estimate   SE df t.ratio p.value
 Acclimation - Antibiotics     9.71 4.40 22   2.204  0.1533
 Acclimation - FMT1           -7.17 4.40 22  -1.627  0.3848
 Acclimation - FMT2          -22.48 4.25 22  -5.284  0.0001
 Antibiotics - FMT1          -16.87 4.55 22  -3.704  0.0063
 Antibiotics - FMT2          -32.19 4.40 22  -7.308  <.0001
 FMT1 - FMT2                 -15.32 4.40 22  -3.477  0.0107

Degrees-of-freedom method: containment 
P value adjustment: tukey method for comparing a family of 4 estimates 

Phylogenetic

Model_phylo <- lme(fixed = phylogenetic ~ treatment, data = alpha_div_meta,
               random = ~ 1 | individual)
summary(Model_phylo)
Linear mixed-effects model fit by REML
  Data: alpha_div_meta 
       AIC      BIC    logLik
  130.0245 138.4317 -59.01224

Random effects:
 Formula: ~1 | individual
        (Intercept) Residual
StdDev:   0.8207678  1.33387

Fixed effects:  phylogenetic ~ treatment 
                         Value Std.Error DF   t-value p-value
(Intercept)           5.534169 0.5220547 22 10.600745  0.0000
treatmentAntibiotics -1.632652 0.6515261 22 -2.505889  0.0201
treatmentFMT1        -1.454635 0.6515261 22 -2.232658  0.0361
treatmentFMT2        -0.424717 0.6287926 22 -0.675448  0.5064
 Correlation: 
                     (Intr) trtmnA trFMT1
treatmentAntibiotics -0.581              
treatmentFMT1        -0.581  0.464       
treatmentFMT2        -0.602  0.483  0.483

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-2.06341294 -0.41689413 -0.09586612  0.41091089  2.13759464 

Number of Observations: 34
Number of Groups: 9 
emmeans(Model_phylo, pairwise ~ treatment)
$emmeans
 treatment   emmean    SE df lower.CL upper.CL
 Acclimation   5.53 0.522  8     4.33     6.74
 Antibiotics   3.90 0.549  8     2.64     5.17
 FMT1          4.08 0.549  8     2.81     5.35
 FMT2          5.11 0.522  8     3.91     6.31

Degrees-of-freedom method: containment 
Confidence level used: 0.95 

$contrasts
 contrast                  estimate    SE df t.ratio p.value
 Acclimation - Antibiotics    1.633 0.652 22   2.506  0.0867
 Acclimation - FMT1           1.455 0.652 22   2.233  0.1456
 Acclimation - FMT2           0.425 0.629 22   0.675  0.9053
 Antibiotics - FMT1          -0.178 0.674 22  -0.264  0.9934
 Antibiotics - FMT2          -1.208 0.652 22  -1.854  0.2761
 FMT1 - FMT2                 -1.030 0.652 22  -1.581  0.4095

Degrees-of-freedom method: containment 
P value adjustment: tukey method for comparing a family of 4 estimates 

15.2.2 Beta diversity

samples_to_keep <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("Acclimation", "Antibiotics", "FMT1", "FMT2")) %>% 
  select(sample) %>% 
  pull()
subset_meta <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("Acclimation", "Antibiotics", "FMT1", "FMT2"))

Richness

richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
               colnames(richness) %in% samples_to_keep])

betadisper(richness, subset_meta$treatment) %>% permutest(.) 

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq  Mean Sq      F N.Perm Pr(>F)  
Groups     3 0.096421 0.032140 4.8803    999  0.011 *
Residuals 30 0.197572 0.006586                       
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(richness ~ treatment,
        data = subset_meta %>% arrange(match(sample,labels(richness))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(sample,labels(richness))) %>% pull(individual)) %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
Model 3 2.683764 0.2155119 2.747165 0.001
Residual 30 9.769211 0.7844881 NA NA
Total 33 12.452975 1.0000000 NA NA
pairwise.adonis(richness, subset_meta$treatment, perm = 999)
                       pairs Df SumsOfSqs  F.Model         R2 p.value p.adjusted sig
1 Acclimation vs Antibiotics  1 0.8449464 2.247427 0.13030507   0.003      0.018   .
2        Acclimation vs FMT1  1 0.9551308 2.926054 0.16322910   0.001      0.006   *
3        Acclimation vs FMT2  1 0.9130048 3.195028 0.16645080   0.001      0.006   *
4        Antibiotics vs FMT1  1 0.9852559 2.654101 0.15936620   0.004      0.024   .
5        Antibiotics vs FMT2  1 1.3163001 4.051926 0.21267802   0.001      0.006   *
6               FMT1 vs FMT2  1 0.3571397 1.297184 0.07959561   0.123      0.738    

Neutral

neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
               colnames(neutral) %in% samples_to_keep])

betadisper(neutral, subset_meta$treatment) %>% permutest(.)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df  Sum Sq  Mean Sq      F N.Perm Pr(>F)  
Groups     3 0.10156 0.033852 2.4329    999   0.08 .
Residuals 30 0.41743 0.013914                       
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(neutral ~ treatment,
        data = subset_meta %>% arrange(match(sample,labels(neutral))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(sample,labels(neutral))) %>% pull(individual)) %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
Model 3 3.379624 0.2803282 3.895223 0.001
Residual 30 8.676329 0.7196718 NA NA
Total 33 12.055953 1.0000000 NA NA
pairwise.adonis(neutral, subset_meta$treatment, perm = 999)
                       pairs Df SumsOfSqs  F.Model         R2 p.value p.adjusted sig
1 Acclimation vs Antibiotics  1 0.8963625 2.634901 0.14941400   0.002      0.012   .
2        Acclimation vs FMT1  1 1.3127773 4.629826 0.23585668   0.001      0.006   *
3        Acclimation vs FMT2  1 1.3540292 5.339808 0.25022756   0.001      0.006   *
4        Antibiotics vs FMT1  1 1.3354906 4.047671 0.22427663   0.002      0.012   .
5        Antibiotics vs FMT2  1 1.5437899 5.235421 0.25872559   0.001      0.006   *
6               FMT1 vs FMT2  1 0.3157079 1.325203 0.08117526   0.153      0.918    

Phylogenetic

phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
               colnames(phylo) %in% samples_to_keep])
betadisper(phylo, subset_meta$treatment) %>% permutest(.) 

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df  Sum Sq  Mean Sq      F N.Perm Pr(>F)   
Groups     3 0.46252 0.154173 6.1575    999  0.003 **
Residuals 30 0.75115 0.025038                        
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(phylo ~ treatment,
        data = subset_meta %>% arrange(match(sample,labels(phylo))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(sample,labels(phylo))) %>% pull(individual)) %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
Model 3 1.912526 0.381447 6.166764 0.001
Residual 30 3.101345 0.618553 NA NA
Total 33 5.013871 1.000000 NA NA
pairwise.adonis(phylo, subset_meta$treatment, perm = 999)
                       pairs Df  SumsOfSqs   F.Model         R2 p.value p.adjusted sig
1 Acclimation vs Antibiotics  1 0.72982793  4.398998 0.22676417   0.002      0.012   .
2        Acclimation vs FMT1  1 0.25319427  3.273842 0.17915456   0.037      0.222    
3        Acclimation vs FMT2  1 0.36496892  6.396667 0.28560797   0.003      0.018   .
4        Antibiotics vs FMT1  1 1.12675209  7.208093 0.33987463   0.002      0.012   .
5        Antibiotics vs FMT2  1 1.33118440 10.285949 0.40678516   0.002      0.012   .
6               FMT1 vs FMT2  1 0.06393539  1.565182 0.09448624   0.163      0.978    

15.3 Is the gut microbiota similar to the inoculum after FMT?

15.3.1 Alpha diversity

alpha_div_meta <- alpha_div %>%
  left_join(sample_metadata, by = join_by(sample == sample))%>%
  filter(type == "Cold_intervention" & treatment %in% c("Acclimation", "Antibiotics", "Inoculum", "FMT1", "FMT2") )

alpha_div_meta$treatment <- factor(alpha_div_meta$treatment, levels=c("Acclimation","Antibiotics","Inoculum", "FMT1", "FMT2"))

alpha_div %>%
  pivot_longer(-sample, names_to = "metric", values_to = "value") %>%
  left_join(., sample_metadata, by = "sample") %>%
  mutate(metric=factor(metric,levels=c("richness","neutral","phylogenetic"))) %>%
  filter(type=="Cold_intervention" & treatment %in% c("Acclimation", "Antibiotics", "Inoculum", "FMT1", "FMT2")) %>% 
  ggplot(aes(y = value, x = treatment, color=treatment, fill=treatment)) +
  geom_jitter(width = 0.2, show.legend = FALSE) +
  geom_boxplot(width = 0.5, alpha=0.5, outlier.shape = NA, show.legend = FALSE) +
  scale_color_manual(name="Time point",values=c('#008080',"#003a45", "#d5b52c", "#76b183",'#40714b50')) +
  scale_fill_manual(name="Time point",values=c('#008080',"#003a45", "#d5b52c", "#76b183",'#40714b50')) +
  facet_wrap(. ~ metric, scales = "free") +
  theme_classic() +
  theme(
    strip.background = element_blank(),
    panel.grid.minor.x = element_line(size = .1, color = "grey"),
    axis.text = element_text(size = 12),
    axis.text.x = element_text(angle = 45, hjust = 1),
    axis.title.y = element_text(size = 14),
    axis.title.x = element_blank(),
    strip.text = element_text(size = 16, lineheight = 0.6)
      )  +
  ylab("Alpha diversity")

alpha_div_meta <- alpha_div %>%
  left_join(sample_metadata, by = join_by(sample == sample))%>%
  filter(type == "Cold_intervention" & treatment %in% c("Inoculum", "FMT1", "FMT2") )

Richness

Modelq0GLMMNB <- glmer.nb(richness ~ treatment+(1|individual), data = alpha_div_meta)
summary(Modelq0GLMMNB)
Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
 Family: Negative Binomial(6.2707)  ( log )
Formula: richness ~ treatment + (1 | individual)
   Data: alpha_div_meta

     AIC      BIC   logLik deviance df.resid 
   302.8    309.8   -146.4    292.8       25 

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.04296 -0.55690 -0.04598  0.41609  2.18068 

Random effects:
 Groups     Name        Variance  Std.Dev.
 individual (Intercept) 4.203e-12 2.05e-06
Number of obs: 30, groups:  individual, 9

Fixed effects:
                  Estimate Std. Error z value Pr(>|z|)    
(Intercept)         3.9416     0.1495  26.359  < 2e-16 ***
treatmentFMT2       0.4080     0.2038   2.002 0.045252 *  
treatmentInoculum   0.7189     0.1880   3.824 0.000132 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) trFMT2
tretmntFMT2 -0.734       
trtmntInclm -0.795  0.584
optimizer (Nelder_Mead) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

Neutral

Model_neutral <- lme(fixed = neutral ~ treatment, data = alpha_div_meta,
               random = ~ 1 | individual)
summary(Model_neutral)
Linear mixed-effects model fit by REML
  Data: alpha_div_meta 
       AIC      BIC    logLik
  231.6482 238.1274 -110.8241

Random effects:
 Formula: ~1 | individual
        (Intercept) Residual
StdDev:    5.999193 11.81926

Fixed effects:  neutral ~ treatment 
                     Value Std.Error DF  t-value p-value
(Intercept)       24.92148  4.663457 19 5.343992  0.0000
treatmentFMT2     14.96002  5.768065 19 2.593594  0.0178
treatmentInoculum 21.85949  5.444172 19 4.015210  0.0007
 Correlation: 
                  (Intr) trFMT2
treatmentFMT2     -0.660       
treatmentInoculum -0.705  0.570

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-2.18205314 -0.44648649 -0.05242603  0.48061393  1.78093930 

Number of Observations: 30
Number of Groups: 9 

Phylogenetic

Model_phylo <- lme(fixed = phylogenetic ~ treatment, data = alpha_div_meta,
               random = ~ 1 | individual)
summary(Model_phylo)
Linear mixed-effects model fit by REML
  Data: alpha_div_meta 
       AIC      BIC    logLik
  89.12096 95.60014 -39.56048

Random effects:
 Formula: ~1 | individual
        (Intercept) Residual
StdDev:   0.8687014 0.713253

Fixed effects:  phylogenetic ~ treatment 
                     Value Std.Error DF   t-value p-value
(Intercept)       4.119285 0.3865820 19 10.655656  0.0000
treatmentFMT2     0.990167 0.3494597 19  2.833423  0.0106
treatmentInoculum 1.796914 0.3376900 19  5.321194  0.0000
 Correlation: 
                  (Intr) trFMT2
treatmentFMT2     -0.486       
treatmentInoculum -0.512  0.566

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-1.60112262 -0.56309132 -0.04618045  0.47823718  2.30187547 

Number of Observations: 30
Number of Groups: 9 

15.3.2 Beta diversity

samples_to_keep <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("Inoculum", "FMT1", "FMT2") ) %>% 
  select(sample) %>%
  pull()

subset_meta <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("Inoculum", "FMT1", "FMT2") )

Richness

richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
               colnames(richness) %in% samples_to_keep])

betadisper(richness, subset_meta$treatment) %>% permutest(.) 

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq  Mean Sq      F N.Perm Pr(>F)   
Groups     2 0.098367 0.049184 6.3083    999  0.004 **
Residuals 27 0.210508 0.007797                        
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(richness ~ treatment,
        data = subset_meta %>% arrange(match(sample,labels(richness))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(sample,labels(richness))) %>% pull(individual)) %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
Model 2 1.539185 0.2007101 3.389991 0.001
Residual 27 6.129515 0.7992899 NA NA
Total 29 7.668700 1.0000000 NA NA
pairwise.adonis(richness, subset_meta$treatment, perm = 999)
             pairs Df SumsOfSqs  F.Model         R2 p.value p.adjusted sig
1 Inoculum vs FMT1  1 1.0509630 4.724291 0.19913308   0.001      0.003   *
2 Inoculum vs FMT2  1 0.8197254 4.201012 0.17358829   0.001      0.003   *
3     FMT1 vs FMT2  1 0.3571397 1.297184 0.07959561   0.122      0.366    

Neutral

neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
               colnames(neutral) %in% samples_to_keep])

betadisper(neutral, subset_meta$treatment) %>% permutest(.) 

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df  Sum Sq  Mean Sq      F N.Perm Pr(>F)
Groups     2 0.03502 0.017509 1.2784    999  0.291
Residuals 27 0.36980 0.013696                     
adonis2(neutral ~ treatment,
        data = subset_meta %>% arrange(match(sample,labels(neutral))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(sample,labels(neutral))) %>% pull(individual)) %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
Model 2 1.462216 0.2049975 3.481079 0.001
Residual 27 5.670632 0.7950025 NA NA
Total 29 7.132848 1.0000000 NA NA
pairwise.adonis(neutral, subset_meta$treatment, perm = 999)
             pairs Df SumsOfSqs  F.Model         R2 p.value p.adjusted sig
1 Inoculum vs FMT1  1 1.0077208 4.808422 0.20196308   0.001      0.003   *
2 Inoculum vs FMT2  1 0.7880599 4.163185 0.17229454   0.001      0.003   *
3     FMT1 vs FMT2  1 0.3157079 1.325203 0.08117526   0.172      0.516    

Phylogenetic

phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
               colnames(phylo) %in% samples_to_keep])
betadisper(phylo, subset_meta$treatment) %>% permutest(.) 

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df  Sum Sq   Mean Sq      F N.Perm Pr(>F)
Groups     2 0.01119 0.0055948 0.3668    999   0.72
Residuals 27 0.41184 0.0152533                     
adonis2(phylo ~ treatment,
        data = subset_meta %>% arrange(match(sample,labels(phylo))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(sample,labels(phylo))) %>% pull(individual)) %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
Model 2 0.1936316 0.1519883 2.419591 0.001
Residual 27 1.0803587 0.8480117 NA NA
Total 29 1.2739903 1.0000000 NA NA
pairwise.adonis(phylo, subset_meta$treatment, perm = 999)
             pairs Df  SumsOfSqs  F.Model         R2 p.value p.adjusted sig
1 Inoculum vs FMT1  1 0.11166475 2.363709 0.11064134   0.038      0.114    
2 Inoculum vs FMT2  1 0.10804939 3.322530 0.14246010   0.013      0.039   .
3     FMT1 vs FMT2  1 0.06393539 1.565182 0.09448624   0.151      0.453    

NMDS

samples_to_keep <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("Acclimation","Antibiotics","Inoculum", "FMT1", "FMT2") ) %>% 
  select(sample) %>%
  pull()

subset_meta <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("Acclimation","Antibiotics","Inoculum", "FMT1", "FMT2") )

alpha_div_meta$treatment <- factor(alpha_div_meta$treatment, levels=c("Acclimation","Antibiotics","Inoculum", "FMT1", "FMT2"))
richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
               colnames(richness) %in% samples_to_keep])
neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
               colnames(neutral) %in% samples_to_keep])
phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
               colnames(phylo) %in% samples_to_keep])
richness %>%
  vegan::metaMDS(., trymax = 500, k = 2, trace=0) %>%
  vegan::scores() %>%
  as_tibble(., rownames = "sample") %>%
  dplyr::left_join(subset_meta, by = join_by(sample == sample)) %>%
  group_by(treatment) %>%
  mutate(x_cen = mean(NMDS1, na.rm = TRUE)) %>%
  mutate(y_cen = mean(NMDS2, na.rm = TRUE)) %>%
  ungroup() %>%
  ggplot(aes(x = NMDS1, y = NMDS2, color = treatment)) +
  geom_point(size = 3) +
  scale_color_manual(name="Time point",values=c('#008080',"#003a45", "#d5b52c", "#76b183",'#40714b50')) +
  geom_segment(aes(x = x_cen, y = y_cen, xend = NMDS1, yend = NMDS2), alpha = 0.5, show.legend = FALSE) +
  theme(
    axis.title = element_text(size = 12, face = "bold"),
    axis.text = element_text(size = 10),
    panel.background = element_blank(),
    axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
    legend.text = element_text(size = 10),
    legend.title = element_text(size = 12),
    legend.position = "right", legend.box = "vertical"
    )

neutral %>%
  vegan::metaMDS(., trymax = 500, k = 2, trace=0) %>%
  vegan::scores() %>%
  as_tibble(., rownames = "sample") %>%
  dplyr::left_join(subset_meta, by = join_by(sample == sample)) %>%
  group_by(treatment) %>%
  mutate(x_cen = mean(NMDS1, na.rm = TRUE)) %>%
  mutate(y_cen = mean(NMDS2, na.rm = TRUE)) %>%
  ungroup() %>%
  ggplot(aes(x = NMDS1, y = NMDS2, color = treatment)) +
  geom_point(size = 3) +
  scale_color_manual(name="Time point",values=c('#008080',"#003a45", "#d5b52c", "#76b183",'#40714b50')) +
  geom_segment(aes(x = x_cen, y = y_cen, xend = NMDS1, yend = NMDS2), alpha = 0.5, show.legend = FALSE) +
  theme(
    axis.title = element_text(size = 12, face = "bold"),
    axis.text = element_text(size = 10),
    panel.background = element_blank(),
    axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
    legend.text = element_text(size = 10),
    legend.title = element_text(size = 12),
    legend.position = "right", legend.box = "vertical"
    )

phylo %>%
  vegan::metaMDS(., trymax = 500, k = 2, trace=0) %>%
  vegan::scores() %>%
  as_tibble(., rownames = "sample") %>%
  dplyr::left_join(subset_meta, by = join_by(sample == sample)) %>%
  group_by(treatment) %>%
  mutate(x_cen = mean(NMDS1, na.rm = TRUE)) %>%
  mutate(y_cen = mean(NMDS2, na.rm = TRUE)) %>%
  ungroup() %>%
  ggplot(aes(x = NMDS1, y = NMDS2, color = treatment)) +
  geom_point(size = 3) +
  scale_color_manual(name="Time point",values=c('#008080',"#003a45", "#d5b52c", "#76b183",'#40714b50'))+
  geom_segment(aes(x = x_cen, y = y_cen, xend = NMDS1, yend = NMDS2), alpha = 0.5, show.legend = FALSE) +
  theme(
    axis.title = element_text(size = 12, face = "bold"),
    axis.text = element_text(size = 10),
    panel.background = element_blank(),
    axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
    legend.text = element_text(size = 10),
    legend.title = element_text(size = 12),
    legend.position = "right", legend.box = "vertical"
    )

15.3.2.1 Differences in the functional capacities

sample_sub <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("FMT1","FMT2", "Inoculum"))

genome_counts_filtered <- genome_counts_filt %>% 
    select(one_of(c("genome",sample_sub$sample)))

GIFTs_elements <- to.elements(genome_gifts,GIFT_db)
GIFTs_elements_filtered <- GIFTs_elements[rownames(GIFTs_elements) %in% genome_counts_filtered$genome,]
GIFTs_elements_filtered <- as.data.frame(GIFTs_elements_filtered) %>% 
  select_if(~ !is.numeric(.) || sum(.) != 0)
GIFTs_functions <- to.functions(GIFTs_elements_filtered,GIFT_db)
GIFTs_domains <- to.domains(GIFTs_functions,GIFT_db)

genome_counts_filtered_row <- genome_counts_filtered %>%
  mutate_at(vars(-genome),~./sum(.)) %>% 
  column_to_rownames(., "genome") 

GIFTs_functions_community <- to.community(GIFTs_functions,genome_counts_filtered_row,GIFT_db)
GIFTs_functions_community %>%
  rowMeans() %>%
  as_tibble(., rownames = "sample") %>%
  left_join(sample_metadata, by = join_by(sample == sample)) %>%
  group_by(treatment) %>%
  summarise(MCI = mean(value), sd = sd(value))
# A tibble: 3 × 3
  treatment   MCI     sd
  <chr>     <dbl>  <dbl>
1 FMT1      0.353 0.0186
2 FMT2      0.346 0.0255
3 Inoculum  0.354 0.0374
MCI <- GIFTs_functions_community %>%
  rowMeans() %>%
  as_tibble(., rownames = "sample") %>%
  left_join(sample_metadata, by = join_by(sample == sample)) 

shapiro.test(MCI$value)

    Shapiro-Wilk normality test

data:  MCI$value
W = 0.87186, p-value = 0.001843
kruskal.test(value ~ treatment, data=MCI)

    Kruskal-Wallis rank sum test

data:  value by treatment
Kruskal-Wallis chi-squared = 0.34491, df = 2, p-value = 0.8416

15.3.3 Inoculum vs FMT1

15.3.3.1 Structural zeros

FMT_samples <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment == "FMT1") %>% 
  dplyr::select(sample) %>%
  pull()

Donor_samples <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment =="Inoculum") %>% 
  dplyr::select(sample) %>% pull()

sample_sub <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("FMT1", "Inoculum"))

structural_zeros <- genome_counts_filt %>% 
  select(one_of(c("genome",subset_meta$sample))) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>% 
   rowwise() %>% #compute for each row (genome)
   mutate(all_zeros_FMT = all(c_across(all_of(FMT_samples)) == 0)) %>% 
   mutate(all_zeros_Donor = all(c_across(all_of(Donor_samples)) == 0)) %>% 
   mutate(average_FMT = mean(c_across(all_of(FMT_samples)), na.rm = TRUE)) %>% 
   mutate(average_Donor = mean(c_across(all_of(Donor_samples)), na.rm = TRUE)) %>% 
   filter(all_zeros_FMT == TRUE || all_zeros_Donor==TRUE)  %>% 
   mutate(present = case_when(
      all_zeros_FMT & !all_zeros_Donor ~ "Inoculum",
      !all_zeros_FMT & all_zeros_Donor ~ "FMT1",
      !all_zeros_FMT & !all_zeros_Donor ~ "None",
      TRUE ~ NA_character_
    )) %>%
   mutate(average = ifelse(present == "FMT1", average_FMT, average_Donor)) %>%
   dplyr::select(genome, present, average) %>%
   left_join(genome_metadata, by=join_by(genome==genome)) %>%
   arrange(present,-average)

Structural zeros in each group

fmt <- structural_zeros %>% 
  filter(present=="FMT1") %>% 
  count(phylum, name = "FMT1") %>%
  arrange(desc(FMT1)) 

fmt_f <- structural_zeros %>% 
  filter(present=="FMT1") %>% 
  count(family, name = "FMT1") %>%
  arrange(desc(FMT1)) 
structural_zeros %>% 
  filter(present=="Inoculum") %>% 
  count(phylum, name = "Inoculum") %>%
  arrange(desc(Inoculum)) %>% 
  full_join(.,fmt, by="phylum" ) %>%
  mutate(across(everything(), ~ replace_na(., 0))) %>%
  as.data.frame() %>% 
  summarise(across(where(is.numeric), ~ sum(.x, na.rm = TRUE)))
  Inoculum FMT1
1       85   30

Phyla to which the structural zeros belong in each group

structural_zeros %>% 
  filter(present=="Inoculum") %>% 
  count(phylum, name = "Inoculum") %>%
  arrange(desc(Inoculum)) %>% 
  full_join(.,fmt, by="phylum" ) %>%
  mutate(across(everything(), ~ replace_na(., 0))) %>% 
  tt()
phylum Inoculum FMT1
p__Bacillota_A 31 13
p__Bacillota 18 7
p__Pseudomonadota 12 2
p__Bacteroidota 8 3
p__Cyanobacteriota 6 0
p__Desulfobacterota 3 1
p__Verrucomicrobiota 2 1
p__Bacillota_B 1 0
p__Bacillota_C 1 1
p__Chlamydiota 1 0
p__Fusobacteriota 1 0
p__Spirochaetota 1 0
p__Actinomycetota 0 1
p__Campylobacterota 0 1

Families to which the structural zeros belong in each group

structural_zeros %>% 
  filter(present=="Inoculum") %>% 
  count(family, name = "Inoculum") %>%
  arrange(desc(Inoculum)) %>% 
  full_join(.,fmt_f, by="family" ) %>%
  mutate(across(everything(), ~ replace_na(., 0))) %>% 
  tt()
family Inoculum FMT1
f__Lachnospiraceae 14 5
f__Erysipelotrichaceae 6 3
f__UBA660 6 0
f__Enterobacteriaceae 5 1
f__CAG-239 4 0
f__CAG-508 4 0
f__Coprobacillaceae 4 0
f__Gastranaerophilaceae 4 0
f__UBA1242 4 0
f__ 3 1
f__Desulfovibrionaceae 3 1
f__Ruminococcaceae 3 2
f__Tannerellaceae 3 0
f__Akkermansiaceae 2 0
f__Anaerovoracaceae 2 0
f__Bacteroidaceae 2 1
f__Marinifilaceae 2 0
f__Oscillospiraceae 2 1
f__RUG14156 2 0
f__UBA3830 2 0
f__Brevinemataceae 1 0
f__Chlamydiaceae 1 0
f__Enterococcaceae 1 2
f__Fusobacteriaceae 1 0
f__Mycoplasmoidaceae 1 1
f__Peptococcaceae 1 0
f__Rikenellaceae 1 1
f__UBA1997 1 0
f__UBA3700 0 2
f__Acutalibacteraceae 0 1
f__Arcobacteraceae 0 1
f__CAG-274 0 1
f__LL51 0 1
f__Mycobacteriaceae 0 1
f__Pumilibacteraceae 0 1
f__Rhizobiaceae 0 1
f__Streptococcaceae 0 1
f__Weeksellaceae 0 1
15.3.3.1.1 Functional capacities of the structural zeros
GIFTs_elements <- to.elements(genome_gifts,GIFT_db)
GIFTs_elements_filtered <- GIFTs_elements[rownames(GIFTs_elements) %in% structural_zeros$genome,]
GIFTs_elements_filtered <- as.data.frame(GIFTs_elements_filtered) %>% 
  select_if(~ !is.numeric(.) || sum(.) != 0)

#Aggregate element-level GIFTs into the function level
GIFTs_functions <- to.functions(GIFTs_elements_filtered,GIFT_db)

#Aggregate function-level GIFTs into overall Biosynthesis, Degradation and Structural GIFTs
GIFTs_domains <- to.domains(GIFTs_functions,GIFT_db)

genome_counts_row <- genome_counts_filt %>%
  mutate_at(vars(-genome),~./sum(.)) %>% 
  filter(genome %in% structural_zeros$genome) %>% 
  select(one_of(c("genome",sample_sub$sample))) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>% 
  column_to_rownames(., "genome")

GIFTs_elements_community <- to.community(GIFTs_elements_filtered,genome_counts_row,GIFT_db)
GIFTs_functions_community <- to.community(GIFTs_functions,genome_counts_row,GIFT_db)
GIFTs_domains_community <- to.community(GIFTs_domains,genome_counts_row,GIFT_db)
element_gift <- GIFTs_elements_community %>% 
  as.data.frame() %>% 
  rownames_to_column(., "sample") %>% 
  left_join(., sample_metadata[c(9,10)], by=join_by("sample"=="sample"))
uniqueGIFT_db<- unique(GIFT_db[c(2,4,5,6)]) %>% unite("Function",Function:Element, sep= "_", remove=FALSE)

significant_elements <- element_gift %>%
    pivot_longer(-c(sample,treatment), names_to = "trait", values_to = "value") %>%
    group_by(trait) %>%
    summarise(p_value = wilcox.test(value ~ treatment)$p.value) %>%
    mutate(p_adjust=p.adjust(p_value, method="BH")) %>%
    filter(p_adjust < 0.05)%>%
  rownames_to_column(., "Elements")  %>%
  left_join(.,uniqueGIFT_db[c(1,3)],by = join_by(trait == Code_element))

element_gift_t <- element_gift  %>% 
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric)  %>%
  rownames_to_column(., "trait")

element_gift_filt <- subset(element_gift_t, trait %in% significant_elements$trait) %>% 
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric)  %>%
  rownames_to_column(., "sample")%>% 
  left_join(., sample_metadata[c(9,10)], by = join_by(sample == sample))

difference_table <- element_gift_filt %>%
  select(-sample) %>%
  group_by(treatment) %>%
  summarise(across(everything(), mean)) %>%
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric) %>%
  rownames_to_column(., "Elements") %>%
  left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>% 
  arrange(Function) %>% 
  mutate(Difference=FMT1-Inoculum)%>% 
  mutate(group_color = ifelse(Difference <0, "Inoculum","FMT1")) 
difference_table %>%
  ggplot(aes(x=forcats::fct_reorder(Function,Difference), y=Difference, fill=group_color)) + 
  geom_col() +
  scale_fill_manual(
          breaks=c("FMT1","Inoculum"),
          values=c('#40714b', "#d5b52c")) +
  geom_hline(yintercept=0) + 
  coord_flip()+
  theme(axis.text = element_text(size = 10),
        axis.title = element_text(size = 12),
        legend.position = "right", 
        panel.background = element_blank(),
          panel.grid.major = element_line(size = 0.15, linetype = 'solid',
                                colour = "grey"))+
  xlab("Microbial Functional Capacity") + 
  ylab("Mean difference")+
  guides(fill=guide_legend(title="Time point"))

15.3.3.2 Differential abundance analysis: composition

phylo_samples <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("FMT1", "Inoculum")) %>% 
  column_to_rownames("sample") %>%
  sample_data()
phylo_genome <- genome_counts_filt %>% 
  filter(!genome %in% structural_zeros$genome) %>% 
  select(one_of(c("genome",rownames(phylo_samples)))) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
  column_to_rownames("genome") %>% 
  otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>% 
  filter(genome %in% rownames(phylo_genome)) %>% 
  column_to_rownames("genome") %>% 
  dplyr::select(domain,phylum,class,order,family,genus,species) %>% 
  as.matrix() %>% 
  tax_table()

physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)
ancombc_FMT_Donor_2803 = ancombc2(data = physeq_genome_filtered, 
                  assay_name = "counts", 
                  tax_level = NULL,
                  fix_formula = "treatment",
                  p_adj_method = "holm", 
                  pseudo_sens = TRUE,
                  prv_cut =0, 
                  lib_cut = 0, 
                  s0_perc = 0.05,
                  group = NULL, 
                  struc_zero = FALSE, 
                  neg_lb = FALSE,
                  alpha = 0.05, 
                  n_cl = 2, 
                  verbose = TRUE,
                  global = FALSE, 
                  pairwise = FALSE, 
                  dunnet = FALSE, 
                  trend = FALSE,
                  iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
                  em_control = list(tol = 1e-5, max_iter = 100),
                  mdfdr_control = list(fwer_ctrl_method = "holm", B = 100), 
                  trend_control = NULL)
save(ancombc_FMT_Donor_2803, file = "data/ancombc_FMT_Donor_2803.Rdata")
load("data/ancombc_FMT_Donor_2803.Rdata")
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
  rownames_to_column(., "taxon") %>%
  mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))

ancombc_rand_table_mag <- ancombc_FMT_Donor_2803$res %>%
  dplyr::select(taxon, lfc_treatmentFMT1, p_treatmentFMT1) %>%
  filter(p_treatmentFMT1 < 0.05) %>%
  dplyr::arrange(p_treatmentFMT1) %>%
  left_join(., genome_metadata, by = join_by(taxon == genome)) %>%
  mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
  dplyr::arrange(lfc_treatmentFMT1)

colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
  mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", ""))  %>%
  right_join(taxonomy, by=join_by(phylum == phylum)) %>%
  dplyr::select(phylum, colors) %>%
  mutate(colors = str_c(colors, "80"))  %>% #add 80% alpha
    unique() %>%
    dplyr::arrange(phylum)

tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
  
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
    dplyr::arrange(phylum) %>%
    dplyr::select(colors) %>%
    pull()

Differential abundance MAGs in each group

fmt_count <- ancombc_rand_table_mag %>%
  filter(lfc_treatmentFMT1<0)  %>% 
  count(phylum, name = "FMT1") %>%
  arrange(desc(FMT1)) 

ancombc_rand_table_mag %>%
  filter(lfc_treatmentFMT1>0)  %>% 
  count(phylum, name = "Inoculum") %>%
  arrange(desc(Inoculum))  %>% 
  full_join(.,fmt_count, by="phylum")%>%
  mutate(across(where(is.numeric), ~ replace_na(., 0)))
            phylum Inoculum FMT1
1      Bacillota_A        9   10
2     Bacteroidota        4   11
3        Bacillota        1    2
4 Campylobacterota        1    1
5 Desulfobacterota        1    1
6   Pseudomonadota        0    1
ancombc_rand_table_mag %>%
  filter(lfc_treatmentFMT1>0)  %>% 
  count(phylum, name = "Inoculum") %>%
  arrange(desc(Inoculum))  %>% 
  full_join(.,fmt_count, by="phylum")%>%
  mutate(across(where(is.numeric), ~ replace_na(., 0))) %>% 
  as.data.frame() %>% 
  summarise(across(where(is.numeric), ~ sum(.x, na.rm = TRUE)))
  Inoculum FMT1
1       16   26
ancombc_rand_table_mag%>%
      mutate(genome=factor(taxon,levels=ancombc_rand_table_mag$taxon)) %>%
ggplot(., aes(x=lfc_treatmentFMT1, y=forcats::fct_reorder(genome,lfc_treatmentFMT1), fill=phylum)) + #forcats::fct_rev()
  geom_col() + 
  scale_fill_manual(values=tax_color) + 
  geom_hline(yintercept=0) + 
  theme(panel.background = element_blank(),
        axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
        axis.text.x = element_text(size = 12),
        axis.text.y = element_text(size = 8),
        axis.title = element_text(size = 14, face = "bold"),
        legend.text = element_text(size = 12),
        legend.title = element_text(size = 14, face = "bold"),
        legend.position = "right", legend.box = "vertical")+
  xlab("log2FoldChange") + 
  ylab("Species")+
  guides(fill=guide_legend(title="Phylum"))

MAGs enriched in FMT on the left side and in FMT1 on the right side

Phyla of the significant MAGs

FMT1

ancombc_rand_table_mag%>%
  filter(lfc_treatmentFMT1<0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
            phylum sample_count
1     Bacteroidota           11
2      Bacillota_A           10
3        Bacillota            2
4 Campylobacterota            1
5 Desulfobacterota            1
6   Pseudomonadota            1
ancombc_rand_table_mag%>%
  filter(lfc_treatmentFMT1<0)  %>% 
  select(phylum, family, genus, species)
             phylum                 family              genus species
1  Campylobacterota   f__Helicobacteraceae          g__NHYM01        
2      Bacteroidota       f__Rikenellaceae       g__Alistipes        
3       Bacillota_A     f__Lachnospiraceae        g__JAAYNV01        
4  Desulfobacterota f__Desulfovibrionaceae          g__WRHT01        
5      Bacteroidota       f__Rikenellaceae       g__Alistipes        
6       Bacillota_A              f__DTU072                g__        
7         Bacillota    f__Coprobacillaceae   g__Coprobacillus        
8      Bacteroidota      f__Marinifilaceae     g__Odoribacter        
9      Bacteroidota              f__UBA932     g__Egerieousia        
10        Bacillota f__Erysipelotrichaceae          g__Dielma        
11      Bacillota_A     f__Lachnospiraceae                g__        
12     Bacteroidota      f__Tannerellaceae g__Parabacteroides        
13      Bacillota_A     f__Lachnospiraceae    g__Hungatella_A        
14      Bacillota_A             f__UBA3700                g__        
15      Bacillota_A     f__Lachnospiraceae          g__CAG-95        
16      Bacillota_A                    f__                g__        
17      Bacillota_A     f__Lachnospiraceae     g__Ventrimonas        
18     Bacteroidota      f__Marinifilaceae     g__Odoribacter        
19   Pseudomonadota             f__CAG-239          g__CAZU01        
20     Bacteroidota      f__Bacteroidaceae     g__Bacteroides        
21      Bacillota_A     f__Lachnospiraceae    g__Hungatella_A        
22     Bacteroidota      f__Marinifilaceae     g__Odoribacter        
23     Bacteroidota      f__Muribaculaceae        g__HGM05232        
24     Bacteroidota      f__Bacteroidaceae     g__Bacteroides        
25     Bacteroidota      f__Marinifilaceae     g__Odoribacter        
26      Bacillota_A    f__Oscillospiraceae   g__Oscillibacter        

Inoculum

ancombc_rand_table_mag%>%
  filter(lfc_treatmentFMT1>0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
            phylum sample_count
1      Bacillota_A            9
2     Bacteroidota            4
3        Bacillota            1
4 Campylobacterota            1
5 Desulfobacterota            1
ancombc_rand_table_mag%>%
  filter(lfc_treatmentFMT1>0)  %>% 
  select(phylum, family, genus, species)
             phylum                 family                   genus            species
1       Bacillota_A    f__Oscillospiraceae g__Pseudoflavonifractor                   
2       Bacillota_A     f__Lachnospiraceae         g__Lacrimispora                   
3         Bacillota   f__Mycoplasmoidaceae           g__Ureaplasma                   
4      Bacteroidota      f__Bacteroidaceae          g__Bacteroides                   
5       Bacillota_A     f__Lachnospiraceae             g__JALFVM01                   
6       Bacillota_A             f__UBA3700                     g__                   
7  Desulfobacterota f__Desulfovibrionaceae            g__Bilophila                   
8       Bacillota_A     f__Lachnospiraceae              g__Blautia                   
9      Bacteroidota      f__Tannerellaceae      g__Parabacteroides                   
10     Bacteroidota      f__Bacteroidaceae          g__Bacteroides Bacteroides ovatus
11      Bacillota_A     f__Ruminococcaceae     g__Negativibacillus                   
12     Bacteroidota      f__Bacteroidaceae                     g__                   
13      Bacillota_A     f__Lachnospiraceae       g__Eisenbergiella                   
14      Bacillota_A     f__Lachnospiraceae                     g__                   
15      Bacillota_A     f__Lachnospiraceae           g__Copromonas                   
16 Campylobacterota   f__Helicobacteraceae       g__Helicobacter_J                   

15.3.3.3 Differences in the functional capacities

sample_sub <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("FMT1", "Inoculum"))
genome_counts_filtered <- genome_counts_filt %>% 
    select(one_of(c("genome",sample_sub$sample)))

GIFTs_elements <- to.elements(genome_gifts,GIFT_db)
GIFTs_elements_filtered <- GIFTs_elements[rownames(GIFTs_elements) %in% genome_counts_filtered$genome,]
GIFTs_elements_filtered <- as.data.frame(GIFTs_elements_filtered) %>% 
  select_if(~ !is.numeric(.) || sum(.) != 0)
GIFTs_functions <- to.functions(GIFTs_elements_filtered,GIFT_db)
GIFTs_domains <- to.domains(GIFTs_functions,GIFT_db)

genome_counts_filtered_row <- genome_counts_filtered %>%
  mutate_at(vars(-genome),~./sum(.)) %>% 
  column_to_rownames(., "genome") 

GIFTs_elements_community <- to.community(GIFTs_elements_filtered,genome_counts_filtered_row,GIFT_db)
GIFTs_functions_community <- to.community(GIFTs_functions,genome_counts_filtered_row,GIFT_db)
GIFTs_domains_community <- to.community(GIFTs_domains,genome_counts_filtered_row,GIFT_db)
15.3.3.3.1 Community elements differences:

MCI

GIFTs_elements_community %>%
  rowMeans() %>%
  as_tibble(., rownames = "sample") %>%
  left_join(sample_metadata, by = join_by(sample == sample)) %>%
  group_by(treatment) %>%
  summarise(MCI = mean(value), sd = sd(value))
# A tibble: 2 × 3
  treatment   MCI     sd
  <chr>     <dbl>  <dbl>
1 FMT1      0.359 0.0214
2 Inoculum  0.351 0.0426
MCI <- GIFTs_elements_community %>%
  rowMeans() %>%
  as_tibble(., rownames = "sample") %>%
  left_join(sample_metadata, by = join_by(sample == sample)) 

shapiro.test(MCI$value)

    Shapiro-Wilk normality test

data:  MCI$value
W = 0.93266, p-value = 0.1556
wilcox.test(value ~ treatment, data=MCI)

    Wilcoxon rank sum exact test

data:  value by treatment
W = 65, p-value = 0.3738
alternative hypothesis: true location shift is not equal to 0
element_gift <- GIFTs_elements_community %>% 
  as.data.frame() %>% 
  rownames_to_column(., "sample") %>% 
  left_join(., sample_metadata[c(9,10)], by=join_by("sample"=="sample"))
uniqueGIFT_db<- unique(GIFT_db[c(2,4,5,6)]) %>% unite("Function",Function:Element, sep= "_", remove=FALSE)

significant_elements <- element_gift %>%
    pivot_longer(-c(sample,treatment), names_to = "trait", values_to = "value") %>%
    group_by(trait) %>%
    summarise(p_value = wilcox.test(value ~ treatment)$p.value) %>%
    mutate(p_adjust=p.adjust(p_value, method="BH")) %>%
    filter(p_adjust < 0.05)%>%
  rownames_to_column(., "Elements")  %>%
  left_join(.,uniqueGIFT_db[c(1,3)],by = join_by(trait == Code_element))

element_gift_t <- element_gift  %>% 
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric)  %>%
  rownames_to_column(., "trait")

element_gift_filt <- subset(element_gift_t, trait %in% significant_elements$trait) %>% 
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric)  %>%
  rownames_to_column(., "sample")%>% 
  left_join(., sample_metadata[c(9,10)], by = join_by(sample == sample))

difference_table <- element_gift_filt %>%
  select(-sample) %>%
  group_by(treatment) %>%
  summarise(across(everything(), mean)) %>%
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric) %>%
  rownames_to_column(., "Elements") %>%
  left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>% 
  arrange(Function) %>% 
  mutate(Difference=FMT1-Inoculum)%>% 
  mutate(group_color = ifelse(Difference <0, "Inoculum","FMT1")) 
15.3.3.3.2 Community functions differences

MCI

GIFTs_functions_community %>%
  rowMeans() %>%
  as_tibble(., rownames = "sample") %>%
  left_join(sample_metadata, by = join_by(sample == sample)) %>%
  group_by(treatment) %>%
  summarise(MCI = mean(value), sd = sd(value))
# A tibble: 2 × 3
  treatment   MCI     sd
  <chr>     <dbl>  <dbl>
1 FMT1      0.353 0.0186
2 Inoculum  0.354 0.0374
MCI <- GIFTs_functions_community %>%
  rowMeans() %>%
  as_tibble(., rownames = "sample") %>%
  left_join(sample_metadata, by = join_by(sample == sample)) 

shapiro.test(MCI$value)

    Shapiro-Wilk normality test

data:  MCI$value
W = 0.83167, p-value = 0.002086
wilcox.test(value ~ treatment, data=MCI)

    Wilcoxon rank sum exact test

data:  value by treatment
W = 60, p-value = 0.5951
alternative hypothesis: true location shift is not equal to 0
function_gift <- GIFTs_functions_community %>% 
  as.data.frame() %>% 
  rownames_to_column(., "sample") %>% 
  merge(., sample_metadata[c(9,10)], by="sample")
unique_funct_db<- GIFT_db[c(3,4,5)] %>% 
  distinct(Code_function, .keep_all = TRUE)

significant_functional <- function_gift %>%
    pivot_longer(-c(sample,treatment), names_to = "trait", values_to = "value") %>%
    group_by(trait) %>%
    summarise(p_value = wilcox.test(value ~ treatment)$p.value) %>%
    mutate(p_adjust=p.adjust(p_value, method="BH")) %>%
    filter(p_adjust < 0.05)%>%
  left_join(.,unique_funct_db[c(1,3)],by = join_by(trait == Code_function))

significant_functional
# A tibble: 2 × 4
  trait p_value p_adjust Function               
  <chr>   <dbl>    <dbl> <chr>                  
1 B04   0.00454   0.0454 SCFA biosynthesis      
2 B10   0.00454   0.0454 Antibiotic biosynthesis

15.3.4 Inoculum vs FMT2

15.3.4.1 Structural zeros

FMT2_samples <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment == "FMT2") %>% 
  dplyr::select(sample) %>%
  pull()

Inoculum_samples <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment =="Inoculum") %>% 
  dplyr::select(sample) %>% pull()

sample_sub <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("FMT2", "Inoculum"))

structural_zeros <- genome_counts_filt %>% 
  select(one_of(c("genome",subset_meta$sample))) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>% 
   rowwise() %>% #compute for each row (genome)
   mutate(all_zeros_FMT2 = all(c_across(all_of(FMT2_samples)) == 0)) %>% 
   mutate(all_zeros_Donor = all(c_across(all_of(Donor_samples)) == 0)) %>% 
   mutate(average_FMT2 = mean(c_across(all_of(FMT2_samples)), na.rm = TRUE)) %>% 
   mutate(average_Donor = mean(c_across(all_of(Donor_samples)), na.rm = TRUE)) %>% 
   filter(all_zeros_FMT2 == TRUE || all_zeros_Donor==TRUE)  %>% 
   mutate(present = case_when(
      all_zeros_FMT2 & !all_zeros_Donor ~ "Inoculum",
      !all_zeros_FMT2 & all_zeros_Donor ~ "FMT2",
      !all_zeros_FMT2 & !all_zeros_Donor ~ "None",
      TRUE ~ NA_character_
    )) %>%
   mutate(average = ifelse(present == "FMT2", average_FMT2, average_Donor)) %>%
   dplyr::select(genome, present, average) %>%
   left_join(genome_metadata, by=join_by(genome==genome)) %>%
   arrange(present,-average)

Structural zeros in each group

fmt <- structural_zeros %>% 
  filter(present=="FMT2") %>% 
  count(phylum, name = "FMT2") %>%
  arrange(desc(FMT2)) 

fmt2_f <- structural_zeros %>% 
  filter(present=="FMT2") %>% 
  count(family, name = "FMT2") %>%
  arrange(desc(FMT2)) 
structural_zeros %>% 
  filter(present=="Inoculum") %>% 
  count(phylum, name = "Inoculum") %>%
  arrange(desc(Inoculum)) %>% 
  full_join(.,fmt, by="phylum" ) %>%
  mutate(across(everything(), ~ replace_na(., 0))) %>%
  as.data.frame() %>% 
  summarise(across(where(is.numeric), ~ sum(.x, na.rm = TRUE)))
  Inoculum FMT2
1       62   50

Phyla to which the structural zeros belong in each group

structural_zeros %>% 
  filter(present=="Inoculum") %>% 
  count(phylum, name = "Inoculum") %>%
  arrange(desc(Inoculum)) %>% 
  full_join(.,fmt, by="phylum" ) %>%
  mutate(across(everything(), ~ replace_na(., 0))) %>% 
  tt()
phylum Inoculum FMT2
p__Bacillota_A 27 20
p__Bacillota 17 8
p__Pseudomonadota 6 11
p__Bacteroidota 5 6
p__Desulfobacterota 2 2
p__Bacillota_B 1 0
p__Chlamydiota 1 0
p__Cyanobacteriota 1 0
p__Fusobacteriota 1 0
p__Verrucomicrobiota 1 2
p__Bacillota_C 0 1

Families to which the structural zeros belong in each group

structural_zeros %>% 
  filter(present=="Inoculum") %>% 
  count(family, name = "Inoculum") %>%
  arrange(desc(Inoculum)) %>% 
  full_join(.,fmt2_f, by="family" ) %>%
  mutate(across(everything(), ~ replace_na(., 0))) %>% 
  tt()
family Inoculum FMT2
f__Lachnospiraceae 11 9
f__Erysipelotrichaceae 6 5
f__UBA660 6 0
f__Enterobacteriaceae 5 2
f__CAG-508 3 0
f__Ruminococcaceae 3 3
f__Anaerovoracaceae 2 0
f__Coprobacillaceae 2 0
f__Desulfovibrionaceae 2 2
f__Oscillospiraceae 2 1
f__Tannerellaceae 2 1
f__UBA1242 2 0
f__ 1 3
f__Akkermansiaceae 1 0
f__Bacteroidaceae 1 2
f__CAG-239 1 2
f__Chlamydiaceae 1 0
f__Clostridiaceae 1 0
f__Enterococcaceae 1 1
f__Eubacteriaceae 1 0
f__Fusobacteriaceae 1 0
f__Gastranaerophilaceae 1 0
f__Marinifilaceae 1 0
f__Mycoplasmoidaceae 1 1
f__Peptococcaceae 1 0
f__Rikenellaceae 1 1
f__Staphylococcaceae 1 0
f__UBA3700 1 2
f__Anaerotignaceae 0 2
f__LL51 0 2
f__Acutalibacteraceae 0 1
f__CAG-274 0 1
f__CALVMC01 0 1
f__Devosiaceae 0 1
f__RUG11792 0 1
f__Rhizobiaceae 0 1
f__Sphingobacteriaceae 0 1
f__Streptococcaceae 0 1
f__UBA1997 0 1
f__UBA3830 0 1
f__Weeksellaceae 0 1
15.3.4.1.1 Functional capacities of the structural zeros
#Aggregate bundle-level GIFTs into the compound level
GIFTs_elements <- to.elements(genome_gifts,GIFT_db)
GIFTs_elements_filtered <- GIFTs_elements[rownames(GIFTs_elements) %in% structural_zeros$genome,]
GIFTs_elements_filtered <- as.data.frame(GIFTs_elements_filtered) %>% 
  select_if(~ !is.numeric(.) || sum(.) != 0)

#Aggregate element-level GIFTs into the function level
GIFTs_functions <- to.functions(GIFTs_elements_filtered,GIFT_db)

#Aggregate function-level GIFTs into overall Biosynthesis, Degradation and Structural GIFTs
GIFTs_domains <- to.domains(GIFTs_functions,GIFT_db)

genome_counts_row <- genome_counts_filt %>%
  mutate_at(vars(-genome),~./sum(.)) %>% 
  filter(genome %in% structural_zeros$genome) %>% 
  select(one_of(c("genome",sample_sub$sample))) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>% 
  column_to_rownames(., "genome")

GIFTs_elements_community <- to.community(GIFTs_elements_filtered,genome_counts_row,GIFT_db)
GIFTs_functions_community <- to.community(GIFTs_functions,genome_counts_row,GIFT_db)
GIFTs_domains_community <- to.community(GIFTs_domains,genome_counts_row,GIFT_db)
element_gift_inoculum <- GIFTs_elements_community %>% 
  as.data.frame() %>% 
  rownames_to_column(., "sample") %>% 
  left_join(., sample_metadata[c(9,10)], by=join_by("sample"=="sample"))
uniqueGIFT_db<- unique(GIFT_db[c(2,4,5,6)]) %>% unite("Function",Function:Element, sep= "_", remove=FALSE)

significant_elements <- element_gift_inoculum %>%
    pivot_longer(-c(sample,treatment), names_to = "trait", values_to = "value") %>%
    group_by(trait) %>%
    summarise(p_value = wilcox.test(value ~ treatment)$p.value) %>%
    mutate(p_adjust=p.adjust(p_value, method="BH")) %>%
    filter(p_adjust < 0.05)%>%
  rownames_to_column(., "Elements")  %>%
  left_join(.,uniqueGIFT_db[c(1,3)],by = join_by(trait == Code_element))

element_gift_inoculum_t <- element_gift_inoculum  %>% 
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric)  %>%
  rownames_to_column(., "trait")

element_gift_inoculum_filt <- subset(element_gift_inoculum_t, trait %in% significant_elements$trait) %>% 
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric)  %>%
  rownames_to_column(., "sample")%>% 
  left_join(., sample_metadata[c(9,10)], by = join_by(sample == sample))

difference_table <- element_gift_inoculum_filt %>%
  select(-sample) %>%
  group_by(treatment) %>%
  summarise(across(everything(), mean)) %>%
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric) %>%
  rownames_to_column(., "Elements") %>%
  left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>% 
  arrange(Function) %>% 
  mutate(Difference=FMT2-Inoculum)%>% 
  mutate(group_color = ifelse(Difference <0, "Inoculum","FMT2")) 
difference_table %>%
  ggplot(aes(x=forcats::fct_reorder(Function,Difference), y=Difference, fill=group_color)) + 
  geom_col() +
  scale_fill_manual(
          breaks=c("FMT2","Inoculum"),
          values=c('#40714b50', "#d5b52c")) +
  geom_hline(yintercept=0) + 
  coord_flip()+
  theme(axis.text = element_text(size = 10),
        axis.title = element_text(size = 12),
        legend.position = "right", 
        panel.background = element_blank(),
          panel.grid.major = element_line(size = 0.15, linetype = 'solid',
                                colour = "grey"))+
  xlab("Microbial Functional Capacity") + 
  ylab("Mean difference")+
  guides(fill=guide_legend(title="Time point"))

15.3.4.2 Differential abundance analysis: composition

phylo_samples <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("FMT2", "Inoculum")) %>% 
  column_to_rownames("sample") %>%
  sample_data()
phylo_genome <- genome_counts_filt %>% 
  filter(!genome %in% structural_zeros$genome) %>% 
  select(one_of(c("genome",rownames(phylo_samples)))) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
  column_to_rownames("genome") %>% 
  otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>% 
  filter(genome %in% rownames(phylo_genome)) %>% 
  column_to_rownames("genome") %>% 
  dplyr::select(domain,phylum,class,order,family,genus,species) %>% 
  as.matrix() %>% 
  tax_table()

physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)
ancombc_FMT2_Donor_2803 = ancombc2(data = physeq_genome_filtered, 
                  assay_name = "counts", 
                  tax_level = NULL,
                  fix_formula = "treatment",
                  p_adj_method = "holm", 
                  pseudo_sens = TRUE,
                  prv_cut =0, 
                  lib_cut = 0, 
                  s0_perc = 0.05,
                  group = NULL, 
                  struc_zero = FALSE, 
                  neg_lb = FALSE,
                  alpha = 0.05, 
                  n_cl = 2, 
                  verbose = TRUE,
                  global = FALSE, 
                  pairwise = FALSE, 
                  dunnet = FALSE, 
                  trend = FALSE,
                  iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
                  em_control = list(tol = 1e-5, max_iter = 100),
                  mdfdr_control = list(fwer_ctrl_method = "holm", B = 100), 
                  trend_control = NULL)
save(ancombc_FMT2_Donor_2803, file = "data/ancombc_FMT2_Donor_2803.Rdata")
load("data/ancombc_FMT2_Donor_2803.Rdata")
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
  rownames_to_column(., "taxon") %>%
  mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))

ancombc_rand_table_mag <- ancombc_FMT2_Donor_2803$res %>%
  dplyr::select(taxon, lfc_treatmentFMT2, p_treatmentFMT2) %>%
  filter(p_treatmentFMT2 < 0.05) %>%
  dplyr::arrange(p_treatmentFMT2) %>%
  merge(., taxonomy, by="taxon") %>%
  mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
  dplyr::arrange(lfc_treatmentFMT2)

colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
  mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", ""))  %>%
  right_join(taxonomy, by=join_by(phylum == phylum)) %>%
  dplyr::select(phylum, colors) %>%
  mutate(colors = str_c(colors, "80"))  %>% #add 80% alpha
    unique() %>%
    dplyr::arrange(phylum)

tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
  
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
    dplyr::arrange(phylum) %>%
    dplyr::select(colors) %>%
    pull()

Differential abundance MAGs in each group

fmt2_count <- ancombc_rand_table_mag %>%
  filter(lfc_treatmentFMT2<0)  %>% 
  count(phylum, name = "FMT2") %>%
  arrange(desc(FMT2)) 

ancombc_rand_table_mag %>%
  filter(lfc_treatmentFMT2>0)  %>% 
  count(phylum, name = "Inoculum") %>%
  arrange(desc(Inoculum))  %>% 
  full_join(.,fmt2_count, by="phylum")%>%
  mutate(across(where(is.numeric), ~ replace_na(., 0)))
            phylum Inoculum FMT2
1      Bacillota_A       12    3
2   Pseudomonadota        3    0
3     Bacteroidota        2    6
4  Cyanobacteriota        2    0
5 Desulfobacterota        2    1
6        Bacillota        1    2
7      Bacillota_B        1    0
8 Campylobacterota        1    1
9    Spirochaetota        0    1
ancombc_rand_table_mag %>%
  filter(lfc_treatmentFMT2>0)  %>% 
  count(phylum, name = "Inoculum") %>%
  arrange(desc(Inoculum))  %>% 
  full_join(.,fmt2_count, by="phylum")%>%
  mutate(across(where(is.numeric), ~ replace_na(., 0))) %>% 
  as.data.frame() %>% 
  summarise(across(where(is.numeric), ~ sum(.x, na.rm = TRUE)))
  Inoculum FMT2
1       24   14
ancombc_rand_table_mag%>%
      mutate(genome=factor(taxon,levels=ancombc_rand_table_mag$taxon)) %>%
ggplot(., aes(x=lfc_treatmentFMT2, y=forcats::fct_reorder(genome,lfc_treatmentFMT2), fill=phylum)) +
  geom_col() + 
  scale_fill_manual(values=tax_color) + 
  geom_hline(yintercept=0) + 
  theme(panel.background = element_blank(),
        axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
        axis.text.x = element_text(size = 12),
        axis.text.y = element_text(size = 8),
        axis.title = element_text(size = 14, face = "bold"),
        legend.text = element_text(size = 12),
        legend.title = element_text(size = 14, face = "bold"),
        legend.position = "right", legend.box = "vertical")+
  xlab("log2FoldChange") + 
  ylab("Species")+
  guides(fill=guide_legend(title="Phylum"))

MAGs enriched in donor on the left side and in FMT2 on the right side

15.3.4.3 Differences in the functional capacities

sample_sub <- sample_metadata %>%
  filter(type == "Cold_intervention" & treatment %in% c("FMT2", "Inoculum"))

genome_counts_filtered <- genome_counts_filt %>% 
    select(one_of(c("genome",sample_sub$sample)))

GIFTs_elements <- to.elements(genome_gifts,GIFT_db)
GIFTs_elements_filtered <- GIFTs_elements[rownames(GIFTs_elements) %in% genome_counts_filtered$genome,]
GIFTs_elements_filtered <- as.data.frame(GIFTs_elements_filtered) %>% 
  select_if(~ !is.numeric(.) || sum(.) != 0)
GIFTs_functions <- to.functions(GIFTs_elements_filtered,GIFT_db)
GIFTs_domains <- to.domains(GIFTs_functions,GIFT_db)

genome_counts_filtered_row <- genome_counts_filtered %>%
  mutate_at(vars(-genome),~./sum(.)) %>% 
  column_to_rownames(., "genome") 

GIFTs_elements_community <- to.community(GIFTs_elements_filtered,genome_counts_filtered_row,GIFT_db)
GIFTs_functions_community <- to.community(GIFTs_functions,genome_counts_filtered_row,GIFT_db)
GIFTs_domains_community <- to.community(GIFTs_domains,genome_counts_filtered_row,GIFT_db)
15.3.4.3.1 Community elements differences:

MCI

GIFTs_elements_community %>%
  rowMeans() %>%
  as_tibble(., rownames = "sample") %>%
  left_join(sample_metadata, by = join_by(sample == sample)) %>%
  group_by(treatment) %>%
  summarise(MCI = mean(value), sd = sd(value))
# A tibble: 2 × 3
  treatment   MCI     sd
  <chr>     <dbl>  <dbl>
1 FMT2      0.350 0.0293
2 Inoculum  0.351 0.0426
MCI <- GIFTs_elements_community %>%
  rowMeans() %>%
  as_tibble(., rownames = "sample") %>%
  left_join(sample_metadata, by = join_by(sample == sample)) 

shapiro.test(MCI$value)

    Shapiro-Wilk normality test

data:  MCI$value
W = 0.94571, p-value = 0.259
wilcox.test(value ~ treatment, data=MCI)

    Wilcoxon rank sum exact test

data:  value by treatment
W = 63, p-value = 0.7938
alternative hypothesis: true location shift is not equal to 0
element_gift <- GIFTs_elements_community %>% 
  as.data.frame() %>% 
  rownames_to_column(., "sample") %>% 
  left_join(., sample_metadata[c(1,10)], by=join_by("sample"=="Tube_code"))
uniqueGIFT_db<- unique(GIFT_db[c(2,4,5,6)]) %>% unite("Function",Function:Element, sep= "_", remove=FALSE)

significant_elements <- element_gift %>%
    pivot_longer(-c(sample,treatment), names_to = "trait", values_to = "value") %>%
    group_by(trait) %>%
    summarise(p_value = wilcox.test(value ~ treatment)$p.value) %>%
    mutate(p_adjust=p.adjust(p_value, method="BH")) %>%
    filter(p_adjust < 0.05)%>%
  rownames_to_column(., "Elements")  %>%
  left_join(.,uniqueGIFT_db[c(1,3)],by = join_by(trait == Code_element))

element_gift_t <- element_gift  %>% 
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric)  %>%
  rownames_to_column(., "trait")

element_gift_filt <- subset(element_gift_t, trait %in% significant_elements$trait) %>% 
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric)  %>%
  rownames_to_column(., "sample")%>% 
  left_join(., sample_metadata[c(9,10)], by = join_by(sample == sample))

difference_table <- element_gift_filt %>%
  select(-sample) %>%
  group_by(treatment) %>%
  summarise(across(everything(), mean)) %>%
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric) %>%
  rownames_to_column(., "Elements") %>%
  left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>% 
  arrange(Function) %>% 
  mutate(Difference=FMT2-Inoculum)%>% 
  mutate(group_color = ifelse(Difference <0, "Inoculum","FMT2")) 
15.3.4.3.2 Community functions differences

MCI

GIFTs_functions_community %>%
  rowMeans() %>%
  as_tibble(., rownames = "sample") %>%
  left_join(sample_metadata, by = join_by(sample == sample)) %>%
  group_by(treatment) %>%
  summarise(MCI = mean(value), sd = sd(value))
# A tibble: 2 × 3
  treatment   MCI     sd
  <chr>     <dbl>  <dbl>
1 FMT2      0.346 0.0255
2 Inoculum  0.354 0.0374
MCI <- GIFTs_functions_community %>%
  rowMeans() %>%
  as_tibble(., rownames = "sample") %>%
  left_join(sample_metadata, by = join_by(sample == sample)) 

shapiro.test(MCI$value)

    Shapiro-Wilk normality test

data:  MCI$value
W = 0.86712, p-value = 0.006921
wilcox.test(value ~ treatment, data=MCI)

    Wilcoxon rank sum exact test

data:  value by treatment
W = 61, p-value = 0.896
alternative hypothesis: true location shift is not equal to 0
function_gift <- GIFTs_functions_community %>% 
  as.data.frame() %>% 
  rownames_to_column(., "sample") %>% 
  merge(., sample_metadata[c(9,10)], by="sample")
unique_funct_db<- GIFT_db[c(3,4,5)] %>% 
  distinct(Code_function, .keep_all = TRUE)

significant_functional <- function_gift %>%
    pivot_longer(-c(sample,treatment), names_to = "trait", values_to = "value") %>%
    group_by(trait) %>%
    summarise(p_value = wilcox.test(value ~ treatment)$p.value) %>%
    mutate(p_adjust=p.adjust(p_value, method="BH")) %>%
    filter(p_adjust < 0.05)%>%
  left_join(.,unique_funct_db[c(1,3)],by = join_by(trait == Code_function))

significant_functional
# A tibble: 1 × 4
  trait p_value p_adjust Function         
  <chr>   <dbl>    <dbl> <chr>            
1 B04   0.00193   0.0387 SCFA biosynthesis

15.4 What is the trend of the microbiota in each type after FMT?

15.4.1 Alpha diversity

label_map <- c(
  "Control" = "Cold-control", 
  "Treatment" = "Cold-intervention",
  "Hot_control" = "Warm-control",
  "richness" = "Species Richness",
  "neutral" = "Neutral Diversity",
  "phylogenetic" = "Phylogenetic Diversity"
)

alpha_div %>%
  pivot_longer(-sample, names_to = "metric", values_to = "value") %>%
  left_join(., sample_metadata, by = join_by(sample == Tube_code)) %>%
  filter(time_point %in% c("FMT1","Acclimation", "FMT2")) %>%
  mutate(metric = factor(metric, levels = c("richness", "neutral", "phylogenetic"))) %>%
  ggplot(aes(y = value, x = time_point, color = type, fill = type)) +
  geom_boxplot(outlier.shape = NA, show.legend = FALSE) +
  geom_point(position = position_jitterdodge(jitter.width = 0.2, dodge.width = 0.8), alpha = 0.5, show.legend = FALSE) +
  facet_grid(metric ~ type, scales = "free_y", labeller = labeller(metric = label_map, type = label_map))+
#  facet_nested(.~metric+type, labeller = labeller(metric = label_map, type = label_map))+
  scale_color_manual(name="Type",
                       breaks=c("Control", "Hot_control", "Treatment"),
                       labels=c("Cold-Cold", "Hot-Hot", "Cold-Hot"),
                       values=c("#4477AA","#d57d2c","#76b183")) +
      scale_fill_manual(name="Type",
                       breaks=c("Control", "Hot_control", "Treatment"),
                       labels=c("Cold-Cold", "Hot-Hot", "Cold-Hot"),
                       values=c("#4477AA50","#d57d2c50","#76b18350")) +
  theme_minimal() +
  theme(axis.text.x=element_text(size=10))+
  labs(x = "Time Point", y = "value")

alpha_div_meta <- alpha_div %>%
  left_join(sample_metadata, by = join_by(sample == Tube_code)) %>%
  filter(time_point=="FMT1"|time_point=="Acclimation"|time_point=="FMT2") 

Richness

Modelq0GLMMNB <- glmer.nb(richness ~ type*time_point+(1|individual), data = alpha_div_meta)
summary(Modelq0GLMMNB)
Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
 Family: Negative Binomial(5.7695)  ( log )
Formula: richness ~ type * time_point + (1 | individual)
   Data: alpha_div_meta

     AIC      BIC   logLik deviance df.resid 
   757.7    783.7   -367.8    735.7       68 

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.01194 -0.49653  0.06196  0.55789  1.90953 

Random effects:
 Groups     Name        Variance Std.Dev.
 individual (Intercept) 0.02586  0.1608  
Number of obs: 79, groups:  individual, 27

Fixed effects:
                                     Estimate Std. Error z value Pr(>|z|)    
(Intercept)                            3.9089     0.1696  23.046   <2e-16 ***
typeCold_intervention                 -0.1233     0.2297  -0.537   0.5915    
typeWarm_control                       0.5568     0.2283   2.439   0.0147 *  
time_pointFMT1                        -0.3140     0.2167  -1.449   0.1473    
time_pointFMT2                         0.1487     0.2173   0.684   0.4937    
typeCold_intervention:time_pointFMT1   0.4309     0.3068   1.404   0.1602    
typeWarm_control:time_pointFMT1       -0.1155     0.2983  -0.387   0.6986    
typeCold_intervention:time_pointFMT2   0.4093     0.2990   1.369   0.1710    
typeWarm_control:time_pointFMT2       -0.3876     0.2988  -1.297   0.1945    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) typCl_ typWr_ t_FMT1 t_FMT2 tC_:_FMT1 tW_:_FMT1 tC_:_FMT2
typCld_ntrv -0.721                                                          
typWrm_cntr -0.741  0.535                                                   
tim_pntFMT1 -0.677  0.497  0.503                                            
tim_pntFMT2 -0.702  0.507  0.520  0.532                                     
typC_:_FMT1  0.482 -0.664 -0.357 -0.707 -0.378                              
typW_:_FMT1  0.496 -0.362 -0.671 -0.727 -0.389  0.515                       
typC_:_FMT2  0.498 -0.686 -0.370 -0.384 -0.719  0.511     0.280             
typW_:_FMT2  0.515 -0.370 -0.684 -0.388 -0.730  0.276     0.516     0.524   
emmeans::emmeans(Modelq0GLMMNB, pairwise ~ type)
$emmeans
 type              emmean     SE  df asymp.LCL asymp.UCL
 Cold_control        3.85 0.1050 Inf      3.65      4.06
 Cold_intervention   4.01 0.1030 Inf      3.81      4.21
 Warm_control        4.24 0.0996 Inf      4.05      4.44

Results are averaged over the levels of: time_point 
Results are given on the log (not the response) scale. 
Confidence level used: 0.95 

$contrasts
 contrast                         estimate    SE  df z.ratio p.value
 Cold_control - Cold_intervention   -0.157 0.145 Inf  -1.083  0.5246
 Cold_control - Warm_control        -0.389 0.144 Inf  -2.711  0.0184
 Cold_intervention - Warm_control   -0.232 0.143 Inf  -1.627  0.2342

Results are averaged over the levels of: time_point 
Results are given on the log (not the response) scale. 
P value adjustment: tukey method for comparing a family of 3 estimates 
emmeans::emmeans(Modelq0GLMMNB, pairwise ~ time_point)
$emmeans
 time_point  emmean     SE  df asymp.LCL asymp.UCL
 Acclimation   4.05 0.0938 Inf      3.87      4.24
 FMT1          3.84 0.0949 Inf      3.66      4.03
 FMT2          4.21 0.0895 Inf      4.03      4.38

Results are averaged over the levels of: type 
Results are given on the log (not the response) scale. 
Confidence level used: 0.95 

$contrasts
 contrast           estimate    SE  df z.ratio p.value
 Acclimation - FMT1    0.209 0.123 Inf   1.700  0.2050
 Acclimation - FMT2   -0.156 0.121 Inf  -1.286  0.4028
 FMT1 - FMT2          -0.365 0.122 Inf  -2.997  0.0077

Results are averaged over the levels of: type 
Results are given on the log (not the response) scale. 
P value adjustment: tukey method for comparing a family of 3 estimates 

Neutral

Modelq1n <- nlme::lme(neutral ~ type*time_point, 
               random = ~ 1 | individual,
               data = alpha_div_meta)
summary(Modelq1n)
Linear mixed-effects model fit by REML
  Data: alpha_div_meta 
       AIC      BIC    logLik
  563.2664 587.9998 -270.6332

Random effects:
 Formula: ~1 | individual
        (Intercept) Residual
StdDev:    4.551076 9.160157

Fixed effects:  neutral ~ type * time_point 
                                          Value Std.Error DF   t-value p-value
(Intercept)                           21.343055  3.603126 46  5.923483  0.0000
typeCold_intervention                 -3.944072  4.960549 24 -0.795088  0.4344
typeWarm_control                      23.258307  4.960549 24  4.688656  0.0001
time_pointFMT1                        -3.983722  4.472618 46 -0.890691  0.3777
time_pointFMT2                         2.374489  4.472618 46  0.530895  0.5980
typeCold_intervention:time_pointFMT1  11.253000  6.325237 46  1.779064  0.0818
typeWarm_control:time_pointFMT1      -14.877819  6.216964 46 -2.393101  0.0208
typeCold_intervention:time_pointFMT2  20.108022  6.216964 46  3.234380  0.0023
typeWarm_control:time_pointFMT2      -14.775497  6.216964 46 -2.376642  0.0217
 Correlation: 
                                     (Intr) typCl_ typWr_ t_FMT1 t_FMT2 tC_:_FMT1 tW_:_FMT1 tC_:_FMT2
typeCold_intervention                -0.726                                                          
typeWarm_control                     -0.726  0.528                                                   
time_pointFMT1                       -0.663  0.481  0.481                                            
time_pointFMT2                       -0.663  0.481  0.481  0.534                                     
typeCold_intervention:time_pointFMT1  0.469 -0.638 -0.340 -0.707 -0.378                              
typeWarm_control:time_pointFMT1       0.477 -0.346 -0.649 -0.719 -0.384  0.509                       
typeCold_intervention:time_pointFMT2  0.477 -0.649 -0.346 -0.384 -0.719  0.509     0.276             
typeWarm_control:time_pointFMT2       0.477 -0.346 -0.649 -0.384 -0.719  0.272     0.518     0.518   

Standardized Within-Group Residuals:
       Min         Q1        Med         Q3        Max 
-2.1324340 -0.7088533  0.0456110  0.6569569  1.9681295 

Number of Observations: 79
Number of Groups: 27 
emmeans::emmeans(Modelq1n, pairwise ~ type)
$emmeans
 type              emmean   SE df lower.CL upper.CL
 Cold_control        20.8 2.36 26     16.0     25.7
 Cold_intervention   27.3 2.36 24     22.4     32.2
 Warm_control        34.2 2.33 24     29.4     39.0

Results are averaged over the levels of: time_point 
Degrees-of-freedom method: containment 
Confidence level used: 0.95 

$contrasts
 contrast                         estimate   SE df t.ratio p.value
 Cold_control - Cold_intervention    -6.51 3.33 24  -1.952  0.1461
 Cold_control - Warm_control        -13.37 3.31 24  -4.038  0.0013
 Cold_intervention - Warm_control    -6.86 3.31 24  -2.073  0.1170

Results are averaged over the levels of: time_point 
Degrees-of-freedom method: containment 
P value adjustment: tukey method for comparing a family of 3 estimates 
emmeans::emmeans(Modelq1n, pairwise ~ time_point)
$emmeans
 time_point  emmean   SE df lower.CL upper.CL
 Acclimation   27.8 2.01 24     23.6     31.9
 FMT1          22.6 2.01 24     18.4     26.7
 FMT2          31.9 1.97 24     27.9     36.0

Results are averaged over the levels of: type 
Degrees-of-freedom method: containment 
Confidence level used: 0.95 

$contrasts
 contrast           estimate   SE df t.ratio p.value
 Acclimation - FMT1     5.19 2.55 46   2.034  0.1156
 Acclimation - FMT2    -4.15 2.52 46  -1.646  0.2372
 FMT1 - FMT2           -9.34 2.52 46  -3.703  0.0016

Results are averaged over the levels of: type 
Degrees-of-freedom method: containment 
P value adjustment: tukey method for comparing a family of 3 estimates 

Phylogenetic

Model_phylo <- nlme::lme(phylogenetic ~ type*time_point, 
               random = ~ 1 | individual,
               data = alpha_div_meta)
summary(Model_phylo)
Linear mixed-effects model fit by REML
  Data: alpha_div_meta 
      AIC      BIC   logLik
  269.592 294.3254 -123.796

Random effects:
 Formula: ~1 | individual
        (Intercept) Residual
StdDev:   0.4979037 1.144231

Fixed effects:  phylogenetic ~ type * time_point 
                                         Value Std.Error DF   t-value p-value
(Intercept)                           5.250918 0.4401145 46 11.930799  0.0000
typeCold_intervention                 0.283251 0.6055741 24  0.467740  0.6442
typeWarm_control                      1.264508 0.6055741 24  2.088114  0.0476
time_pointFMT1                       -0.835721 0.5582377 46 -1.497070  0.1412
time_pointFMT2                       -0.480730 0.5582377 46 -0.861157  0.3936
typeCold_intervention:time_pointFMT1 -0.545026 0.7894673 46 -0.690371  0.4934
typeWarm_control:time_pointFMT1      -1.408920 0.7762583 46 -1.815014  0.0760
typeCold_intervention:time_pointFMT2  0.056014 0.7762583 46  0.072159  0.9428
typeWarm_control:time_pointFMT2      -0.584302 0.7762583 46 -0.752716  0.4555
 Correlation: 
                                     (Intr) typCl_ typWr_ t_FMT1 t_FMT2 tC_:_FMT1 tW_:_FMT1 tC_:_FMT2
typeCold_intervention                -0.727                                                          
typeWarm_control                     -0.727  0.528                                                   
time_pointFMT1                       -0.676  0.492  0.492                                            
time_pointFMT2                       -0.676  0.492  0.492  0.533                                     
typeCold_intervention:time_pointFMT1  0.478 -0.652 -0.348 -0.707 -0.377                              
typeWarm_control:time_pointFMT1       0.486 -0.353 -0.663 -0.719 -0.383  0.509                       
typeCold_intervention:time_pointFMT2  0.486 -0.663 -0.353 -0.383 -0.719  0.509     0.276             
typeWarm_control:time_pointFMT2       0.486 -0.353 -0.663 -0.383 -0.719  0.271     0.517     0.517   

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-2.81770682 -0.52006818 -0.06472395  0.55839915  2.23601869 

Number of Observations: 79
Number of Groups: 27 
emmeans::emmeans(Model_phylo, pairwise ~ type)
$emmeans
 type              emmean    SE df lower.CL upper.CL
 Cold_control        4.81 0.280 26     4.24     5.39
 Cold_intervention   4.93 0.280 24     4.35     5.51
 Warm_control        5.41 0.276 24     4.84     5.98

Results are averaged over the levels of: time_point 
Degrees-of-freedom method: containment 
Confidence level used: 0.95 

$contrasts
 contrast                         estimate    SE df t.ratio p.value
 Cold_control - Cold_intervention    -0.12 0.396 24  -0.304  0.9505
 Cold_control - Warm_control         -0.60 0.393 24  -1.527  0.2963
 Cold_intervention - Warm_control    -0.48 0.393 24  -1.221  0.4525

Results are averaged over the levels of: time_point 
Degrees-of-freedom method: containment 
P value adjustment: tukey method for comparing a family of 3 estimates 
emmeans::emmeans(Model_phylo, pairwise ~ time_point)
$emmeans
 time_point  emmean    SE df lower.CL upper.CL
 Acclimation   5.77 0.245 24     5.26     6.27
 FMT1          4.28 0.245 24     3.77     4.79
 FMT2          5.11 0.240 24     4.61     5.61

Results are averaged over the levels of: type 
Degrees-of-freedom method: containment 
Confidence level used: 0.95 

$contrasts
 contrast           estimate    SE df t.ratio p.value
 Acclimation - FMT1    1.487 0.319 46   4.666  0.0001
 Acclimation - FMT2    0.657 0.315 46   2.085  0.1042
 FMT1 - FMT2          -0.830 0.315 46  -2.635  0.0302

Results are averaged over the levels of: type 
Degrees-of-freedom method: containment 
P value adjustment: tukey method for comparing a family of 3 estimates 

15.4.1.1 Beta diversity

Number of samples used

samples_to_keep_post7 <- sample_metadata %>%
  filter(time_point=="FMT1"|time_point=="Acclimation"|time_point=="FMT2") %>% 
  select(Tube_code) %>% 
  pull()
subset_meta_post7 <- sample_metadata %>%
  filter(time_point=="FMT1"|time_point=="Acclimation"|time_point=="FMT2")

subset_meta_post7$time_point<-as.factor(subset_meta_post7$time_point)
subset_meta_post7$type<-as.factor(subset_meta_post7$type)
length(samples_to_keep_post7)
[1] 79

Richness

richness_post7 <- as.matrix(beta_q0n$S)
richness_post7 <- as.dist(richness_post7[rownames(richness_post7) %in% samples_to_keep_post7,
               colnames(richness_post7) %in% samples_to_keep_post7])
betadisper(richness_post7, subset_meta_post7$type) %>% permutest(., pairwise = TRUE)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df  Sum Sq  Mean Sq      F N.Perm Pr(>F)  
Groups     2 0.06454 0.032268 4.9753    999  0.015 *
Residuals 76 0.49290 0.006485                       
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
                  Cold_control Cold_intervention Warm_control
Cold_control                           0.6990000        0.017
Cold_intervention    0.6817089                          0.006
Warm_control         0.0119513         0.0035106             
adonis2(richness_post7 ~ type*time_point,
        data = subset_meta_post7 %>% arrange(match(Tube_code,labels(richness_post7))),
        permutations = 999,
        strata = subset_meta_post7 %>% arrange(match(Tube_code,labels(richness_post7))) %>% pull(individual),
        by="terms") %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
type 2 3.120806 0.11961754 5.546155 0.001
time_point 2 1.703776 0.06530413 3.027874 0.001
type:time_point 4 1.570884 0.06021051 1.395852 0.001
Residual 70 19.694403 0.75486782 NA NA
Total 78 26.089870 1.00000000 NA NA

Neutral

neutral_post7 <- as.matrix(beta_q1n$S)
neutral_post7 <- as.dist(neutral_post7[rownames(neutral_post7) %in% samples_to_keep_post7,
               colnames(neutral_post7) %in% samples_to_keep_post7])
betadisper(neutral_post7, subset_meta_post7$type) %>% permutest(., pairwise = TRUE)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df  Sum Sq  Mean Sq      F N.Perm Pr(>F)  
Groups     2 0.06738 0.033689 3.8309    999  0.021 *
Residuals 76 0.66833 0.008794                       
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
                  Cold_control Cold_intervention Warm_control
Cold_control                           0.1430000        0.210
Cold_intervention    0.1611083                          0.005
Warm_control         0.1985046         0.0069718             
adonis2(neutral_post7 ~ type*time_point,
        data = subset_meta_post7 %>% arrange(match(Tube_code,labels(neutral_post7))),
        permutations = 999,
        strata = subset_meta_post7 %>% arrange(match(Tube_code,labels(neutral_post7))) %>% pull(individual),
        by="terms") %>%        
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
type 2 3.705559 0.14953528 7.609355 0.001
time_point 2 2.217656 0.08949199 4.553951 0.001
type:time_point 4 1.813192 0.07317011 1.861693 0.001
Residual 70 17.044094 0.68780262 NA NA
Total 78 24.780501 1.00000000 NA NA

Phylogenetic

phylo_post7 <- as.matrix(beta_q1p$S)
phylo_post7 <- as.dist(phylo_post7[rownames(phylo_post7) %in% samples_to_keep_post7,
               colnames(phylo_post7) %in% samples_to_keep_post7])
betadisper(phylo_post7, subset_meta_post7$type) %>% permutest(., pairwise = TRUE)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df  Sum Sq  Mean Sq      F N.Perm Pr(>F)
Groups     2 0.05438 0.027192 2.1499    999  0.147
Residuals 76 0.96123 0.012648                     

Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
                  Cold_control Cold_intervention Warm_control
Cold_control                            0.177000        0.722
Cold_intervention     0.155309                          0.096
Warm_control          0.697512          0.083221             
adonis2(phylo_post7 ~ type*time_point,
        data = subset_meta_post7 %>% arrange(match(Tube_code,labels(phylo_post7))),
        permutations = 999,
        strata = subset_meta_post7 %>% arrange(match(Tube_code,labels(phylo_post7))) %>% pull(individual),
          by="terms") %>%        
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
type 2 0.2941494 0.07500331 3.592254 0.001
time_point 2 0.5528857 0.14097687 6.752032 0.001
type:time_point 4 0.2088312 0.05324856 1.275159 0.150
Residual 70 2.8659522 0.73077126 NA NA
Total 78 3.9218184 1.00000000 NA NA

dbRDA

#Richness
cca_ord <- capscale(formula = richness_post7 ~ subset_meta_post7$time_point* subset_meta_post7$type)
CAP_df <- as.data.frame(vegan::scores(cca_ord, display = "sites")) %>%
  rownames_to_column('Tube_code') %>%
  left_join(subset_meta_post7, by = 'Tube_code') %>%
  column_to_rownames('Tube_code')%>%
  mutate(x_cen = mean(CAP1, na.rm = TRUE)) %>%
  mutate(y_cen = mean(CAP2, na.rm = TRUE))

biplot_scores <- as.data.frame(vegan::scores(cca_ord, display = "bp")) %>%
  rownames_to_column("Variable")
biplot_scores$Variable <- recode(biplot_scores$Variable, 
                                 "subset_meta_post7$time_pointFMT1" = "FMT1",
                                 "subset_meta_post7$time_pointFMT2"="FMT2",
                                 "subset_meta_post7$typeHot_control"="Warm-control",
                                 "subset_meta_post7$typeTreatment" = "Cold-intervention",
                                 "subset_meta_post7$time_pointFMT1:subset_meta_post7$typeHot_control"="FMT1 Warm-control",
                                 "subset_meta_post7$time_pointFMT2:subset_meta_post7$typeHot_control"="FMT2 Warm-control",
                                 "subset_meta_post7$time_pointFMT1:subset_meta_post7$typeTreatment" = "FMT1 Cold-intervention",
                                 "subset_meta_post7$time_pointFMT2:subset_meta_post7$typeTreatment" = "FMT2 Cold-intervention")

beta_richness_nmds_post7 <-CAP_df %>%
  group_by(type, time_point) %>%
  mutate(x_cen = mean(CAP1, na.rm = TRUE)) %>%
  mutate(y_cen = mean(CAP2, na.rm = TRUE)) %>%
  ungroup() %>%
  ggplot(., aes(x=CAP1,y=CAP2, color=type,shape = time_point)) +
  scale_color_manual(name="Type",
          breaks=c("Control","Hot_control", "Treatment"),
          labels=c("Cold-control","Warm-control", "Cold-intervention"),
          values=c("#4477AA","#d57d2c", "#76b183")) +
      scale_fill_manual(name="Type",
          breaks=c("Control","Hot_control", "Treatment"),
          labels=c("Cold-control","Warm-control", "Cold-intervention"),
          values=c("#4477AA50","#d57d2c50","#76b18350")) +
        scale_x_discrete(labels = c("Control" = "Cold-Cold", "Hot_control" = "Hot-Hot", "Treatment" = "Cold-Hot")) +
  geom_point(size=2) +
  geom_hline(yintercept = 0, linetype = "dotted") + 
  geom_vline(xintercept = 0, linetype = "dotted") +
  geom_segment(aes(x=x_cen, y=y_cen, xend=CAP1, yend=CAP2), alpha=0.2) +
  geom_segment(data = biplot_scores, aes(x = 0, y = 0, xend = CAP1, yend = CAP2),
               inherit.aes = FALSE, arrow = arrow(length = unit(0.2, "cm")), color = "black") +
  geom_text(data = biplot_scores, aes(x = CAP1, y = CAP2, label = Variable),
            inherit.aes = FALSE, color = "black", vjust = -0.5, hjust = 0.5)+
  theme_classic()

#Neutral
cca_ord <- capscale(formula = neutral_post7 ~ subset_meta_post7$time_point* subset_meta_post7$type)
CAP_df <- as.data.frame(vegan::scores(cca_ord, display = "sites")) %>%
  rownames_to_column('Tube_code') %>%
  left_join(subset_meta_post7, by = 'Tube_code') %>%
  column_to_rownames('Tube_code')%>%
  mutate(x_cen = mean(CAP1, na.rm = TRUE)) %>%
  mutate(y_cen = mean(CAP2, na.rm = TRUE))

biplot_scores <- as.data.frame(vegan::scores(cca_ord, display = "bp")) %>%
  rownames_to_column("Variable")
biplot_scores$Variable <- recode(biplot_scores$Variable, 
                                 "subset_meta_post7$time_pointFMT1" = "FMT1",
                                 "subset_meta_post7$time_pointFMT2"="FMT2",
                                 "subset_meta_post7$typeHot_control"="Warm-control",
                                 "subset_meta_post7$typeTreatment" = "Cold-intervention",
                                 "subset_meta_post7$time_pointFMT1:subset_meta_post7$typeHot_control"="FMT1 Warm-control",
                                 "subset_meta_post7$time_pointFMT2:subset_meta_post7$typeHot_control"="FMT2 Warm-control",
                                 "subset_meta_post7$time_pointFMT1:subset_meta_post7$typeTreatment" = "FMT1 Cold-intervention",
                                 "subset_meta_post7$time_pointFMT2:subset_meta_post7$typeTreatment" = "FMT2 Cold-intervention")

beta_neutral_nmds_post7 <- CAP_df %>%
  group_by(type, time_point) %>%
  mutate(x_cen = mean(CAP1, na.rm = TRUE)) %>%
  mutate(y_cen = mean(CAP2, na.rm = TRUE)) %>%
  ungroup() %>%
  ggplot(., aes(x=CAP1,y=CAP2, color=type,shape = time_point)) +
  scale_color_manual(name="Type",
          breaks=c("Control","Hot_control", "Treatment"),
          labels=c("Cold-control","Warm-control", "Cold-intervention"),
          values=c("#4477AA","#d57d2c", "#76b183")) +
      scale_fill_manual(name="Type",
          breaks=c("Control","Hot_control", "Treatment"),
          labels=c("Cold-control","Warm-control", "Cold-intervention"),
          values=c("#4477AA50","#d57d2c50","#76b18350")) +
        scale_x_discrete(labels = c("Control" = "Cold-Cold", "Hot_control" = "Hot-Hot", "Treatment" = "Cold-Hot")) +
  geom_point(size=2) +
  geom_hline(yintercept = 0, linetype = "dotted") + 
  geom_vline(xintercept = 0, linetype = "dotted") +
  geom_segment(aes(x=x_cen, y=y_cen, xend=CAP1, yend=CAP2), alpha=0.2) +
  geom_segment(data = biplot_scores, aes(x = 0, y = 0, xend = CAP1, yend = CAP2),
               inherit.aes = FALSE, arrow = arrow(length = unit(0.2, "cm")), color = "black") +
  geom_text(data = biplot_scores, aes(x = CAP1, y = CAP2, label = Variable),
            inherit.aes = FALSE, color = "black", vjust = -0.5, hjust = 0.5)+
  theme_classic()


#Phylogenetic
cca_ord <- capscale(formula = phylo_post7 ~ subset_meta_post7$time_point* subset_meta_post7$type)
CAP_df <- as.data.frame(vegan::scores(cca_ord, display = "sites")) %>%
  rownames_to_column('Tube_code') %>%
  left_join(subset_meta_post7, by = 'Tube_code') %>%
  column_to_rownames('Tube_code')%>%
  mutate(x_cen = mean(CAP1, na.rm = TRUE)) %>%
  mutate(y_cen = mean(CAP2, na.rm = TRUE))

biplot_scores <- as.data.frame(vegan::scores(cca_ord, display = "bp")) %>%
  rownames_to_column("Variable")
biplot_scores$Variable <- recode(biplot_scores$Variable, 
                                 "subset_meta_post7$time_pointFMT1" = "FMT1",
                                 "subset_meta_post7$time_pointFMT2"="FMT2",
                                 "subset_meta_post7$typeHot_control"="Warm-control",
                                 "subset_meta_post7$typeTreatment" = "Cold-intervention",
                                 "subset_meta_post7$time_pointFMT1:subset_meta_post7$typeHot_control"="FMT1 Warm-control",
                                 "subset_meta_post7$time_pointFMT2:subset_meta_post7$typeHot_control"="FMT2 Warm-control",
                                 "subset_meta_post7$time_pointFMT1:subset_meta_post7$typeTreatment" = "FMT1 Cold-intervention",
                                 "subset_meta_post7$time_pointFMT2:subset_meta_post7$typeTreatment" = "FMT2 Cold-intervention")

beta_phylogenetic_nmds_post7 <- CAP_df %>%
  group_by(type, time_point) %>%
  mutate(x_cen = mean(CAP1, na.rm = TRUE)) %>%
  mutate(y_cen = mean(CAP2, na.rm = TRUE)) %>%
  ungroup() %>%
  ggplot(., aes(x=CAP1,y=CAP2, color=type,shape = time_point)) +
  scale_color_manual(name="Type",
          breaks=c("Control","Hot_control", "Treatment"),
          labels=c("Cold-control","Warm-control", "Cold-intervention"),
          values=c("#4477AA","#d57d2c", "#76b183")) +
      scale_fill_manual(name="Type",
          breaks=c("Control","Hot_control", "Treatment"),
          labels=c("Cold-control","Warm-control", "Cold-intervention"),
          values=c("#4477AA50","#d57d2c50","#76b18350")) +
        scale_x_discrete(labels = c("Control" = "Cold-Cold", "Hot_control" = "Hot-Hot", "Treatment" = "Cold-Hot")) +
  geom_point(size=2) +
  geom_hline(yintercept = 0, linetype = "dotted") + 
  geom_vline(xintercept = 0, linetype = "dotted") +
  geom_segment(aes(x=x_cen, y=y_cen, xend=CAP1, yend=CAP2), alpha=0.2) +
  geom_segment(data = biplot_scores, aes(x = 0, y = 0, xend = CAP1, yend = CAP2),
               inherit.aes = FALSE, arrow = arrow(length = unit(0.2, "cm")), color = "black") +
  geom_text(data = biplot_scores, aes(x = CAP1, y = CAP2, label = Variable),
            inherit.aes = FALSE, color = "black", vjust = -0.5, hjust = 0.5)+
  theme_classic()
ggarrange(beta_richness_nmds_post7, beta_neutral_nmds_post7, beta_phylogenetic_nmds_post7, ncol=3, nrow=1, common.legend = TRUE, legend="right")

beta_neutral_nmds_post7

15.5 Differences between acclimation and FMT1 across the three experimental groups

15.5.1 Beta diversity

CI from acclimation to FMT1

samples_to_keep <- sample_metadata %>%
  filter(time_point %in% c("FMT1","Acclimation") & type == "Cold_intervention") %>%
  select(Tube_code) %>% 
  pull()
subset_meta <- sample_metadata %>%
  filter(time_point %in% c("FMT1","Acclimation") & type == "Cold_intervention")

length(samples_to_keep)
[1] 17
richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
               colnames(richness) %in% samples_to_keep])
betadisper(richness, subset_meta$time_point) %>% permutest(., pairwise = TRUE)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq   Mean Sq     F N.Perm Pr(>F)
Groups     1 0.001206 0.0012057 0.125    999  0.714
Residuals 15 0.144707 0.0096471                    

Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
            Acclimation  FMT1
Acclimation             0.722
FMT1            0.72862      
adonis2(richness ~ time_point,
        data = subset_meta %>% arrange(match(Tube_code,labels(richness))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(Tube_code,labels(richness))) %>% pull(individual),
        by="terms") %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
time_point 1 0.9551308 0.1632291 2.926054 0.00390625
Residual 15 4.8963429 0.8367709 NA NA
Total 16 5.8514737 1.0000000 NA NA
neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
               colnames(neutral) %in% samples_to_keep])
betadisper(neutral, subset_meta$time_point) %>% permutest(., pairwise = TRUE)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq  Mean Sq      F N.Perm Pr(>F)
Groups     1 0.004394 0.004394 0.2999    999  0.606
Residuals 15 0.219796 0.014653                     

Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
            Acclimation  FMT1
Acclimation             0.608
FMT1            0.59202      
adonis2(neutral ~ time_point,
        data = subset_meta %>% arrange(match(Tube_code,labels(neutral))),
        strata = subset_meta %>% arrange(match(Tube_code,labels(neutral))) %>% pull(individual),
        by="terms") %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
time_point 1 1.312777 0.2358567 4.629826 0.00390625
Residual 15 4.253219 0.7641433 NA NA
Total 16 5.565996 1.0000000 NA NA
phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
               colnames(phylo) %in% samples_to_keep])
betadisper(phylo, subset_meta$time_point) %>% permutest(., pairwise = TRUE)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df  Sum Sq  Mean Sq      F N.Perm Pr(>F)
Groups     1 0.02219 0.022191 0.8144    999  0.371
Residuals 15 0.40871 0.027247                     

Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
            Acclimation  FMT1
Acclimation             0.358
FMT1            0.38108      
adonis2(phylo ~ time_point,
        data = subset_meta %>% arrange(match(Tube_code,labels(phylo))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(Tube_code,labels(phylo))) %>% pull(individual),
        by="terms") %>%
        tt()
Df SumOfSqs R2 F Pr(>F)
1 0.2531943 0.1791546 3.273842 0.03125
15 1.1600785 0.8208454 NA NA
16 1.4132728 1.0000000 NA NA

CC from acclimation to FMT1

samples_to_keep <- sample_metadata %>%
  filter(time_point %in% c("FMT1","Acclimation") & type == "Cold_control") %>%
  select(Tube_code) %>% 
  pull()
subset_meta <- sample_metadata %>%
  filter(time_point %in% c("FMT1","Acclimation") & type == "Cold_control")

length(samples_to_keep)
[1] 17
richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
               colnames(richness) %in% samples_to_keep])
betadisper(richness, subset_meta$time_point) %>% permutest(., pairwise = TRUE)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq   Mean Sq      F N.Perm Pr(>F)
Groups     1 0.002321 0.0023205 0.2591    999  0.649
Residuals 15 0.134317 0.0089544                     

Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
            Acclimation  FMT1
Acclimation             0.645
FMT1            0.61811      
adonis2(richness ~ time_point,
        data = subset_meta %>% arrange(match(Tube_code,labels(richness))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(Tube_code,labels(richness))) %>% pull(individual),
        by="terms") %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
time_point 1 0.6804988 0.1228384 2.100611 0.00390625
Residual 15 4.8592912 0.8771616 NA NA
Total 16 5.5397900 1.0000000 NA NA
neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
               colnames(neutral) %in% samples_to_keep])
betadisper(neutral, subset_meta$time_point) %>% permutest(., pairwise = TRUE)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq   Mean Sq      F N.Perm Pr(>F)
Groups     1 0.002521 0.0025206 0.1629    999  0.722
Residuals 15 0.232162 0.0154775                     

Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
            Acclimation  FMT1
Acclimation             0.723
FMT1            0.69223      
adonis2(neutral ~ time_point,
        data = subset_meta %>% arrange(match(Tube_code,labels(neutral))),
        strata = subset_meta %>% arrange(match(Tube_code,labels(neutral))) %>% pull(individual),
        by="terms") %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
time_point 1 0.8153894 0.1711361 3.09706 0.00390625
Residual 15 3.9491774 0.8288639 NA NA
Total 16 4.7645668 1.0000000 NA NA
phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
               colnames(phylo) %in% samples_to_keep])
betadisper(phylo, subset_meta$time_point) %>% permutest(., pairwise = TRUE)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq   Mean Sq      F N.Perm Pr(>F)
Groups     1 0.002284 0.0022841 0.2022    999  0.627
Residuals 15 0.169443 0.0112962                     

Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
            Acclimation FMT1
Acclimation             0.64
FMT1            0.65938     
adonis2(phylo ~ time_point,
        data = subset_meta %>% arrange(match(Tube_code,labels(phylo))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(Tube_code,labels(phylo))) %>% pull(individual),
        by="terms") %>%
        tt()
Df SumOfSqs R2 F Pr(>F)
1 0.1176029 0.1666113 2.998803 0.015625
15 0.5882490 0.8333887 NA NA
16 0.7058519 1.0000000 NA NA

WC from acclimation to FMT1

samples_to_keep <- sample_metadata %>%
  filter(time_point %in% c("FMT1","Acclimation") & type == "Warm_control") %>%
  select(Tube_code) %>% 
  pull()
subset_meta <- sample_metadata %>%
  filter(time_point %in% c("FMT1","Acclimation") & type == "Warm_control")

length(samples_to_keep)
[1] 18
richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
               colnames(richness) %in% samples_to_keep])
betadisper(richness, subset_meta$time_point) %>% permutest(., pairwise = TRUE)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq   Mean Sq      F N.Perm Pr(>F)   
Groups     1 0.022023 0.0220227 14.458    999  0.002 **
Residuals 16 0.024371 0.0015232                        
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
            Acclimation  FMT1
Acclimation             0.003
FMT1          0.0015647      
adonis2(richness ~ time_point,
        data = subset_meta %>% arrange(match(Tube_code,labels(richness))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(Tube_code,labels(richness))) %>% pull(individual),
        by="terms") %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
time_point 1 0.5796135 0.132397 2.441615 0.00390625
Residual 16 3.7982306 0.867603 NA NA
Total 17 4.3778441 1.000000 NA NA
neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
               colnames(neutral) %in% samples_to_keep])
betadisper(neutral, subset_meta$time_point) %>% permutest(., pairwise = TRUE)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq   Mean Sq      F N.Perm Pr(>F)
Groups     1 0.014589 0.0145888 2.6594    999  0.114
Residuals 16 0.087771 0.0054857                     

Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
            Acclimation  FMT1
Acclimation             0.112
FMT1            0.12246      
adonis2(neutral ~ time_point,
        data = subset_meta %>% arrange(match(Tube_code,labels(neutral))),
        strata = subset_meta %>% arrange(match(Tube_code,labels(neutral))) %>% pull(individual),
        by="terms") %>%
        broom::tidy() %>%
        tt()
term df SumOfSqs R2 statistic p.value
time_point 1 0.6954835 0.1707749 3.295123 0.00390625
Residual 16 3.3770315 0.8292251 NA NA
Total 17 4.0725150 1.0000000 NA NA
phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
               colnames(phylo) %in% samples_to_keep])
betadisper(phylo, subset_meta$time_point) %>% permutest(., pairwise = TRUE)

Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999

Response: Distances
          Df   Sum Sq   Mean Sq      F N.Perm Pr(>F)
Groups     1 0.001463 0.0014625 0.1701    999  0.832
Residuals 16 0.137566 0.0085979                     

Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
            Acclimation  FMT1
Acclimation             0.856
FMT1            0.68549      
adonis2(phylo ~ time_point,
        data = subset_meta %>% arrange(match(Tube_code,labels(phylo))),
        permutations = 999,
        strata = subset_meta %>% arrange(match(Tube_code,labels(phylo))) %>% pull(individual),
        by="terms") %>%
        tt()
Df SumOfSqs R2 F Pr(>F)
1 0.0925260 0.1571182 2.982496 0.01953125
16 0.4963682 0.8428818 NA NA
17 0.5888942 1.0000000 NA NA

15.5.2 Functional differences

CI from acclimation to FMT1

significant_element<-element_gift %>%
  filter(time_point %in% c("FMT1","Acclimation") & type == "Cold_intervention") %>%
  select(-time_point, -type) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(Tube_code, where( ~ is.numeric(.) && sum(.) > 0)) %>%
  left_join(sample_metadata[c(1, 8)], by = "Tube_code") %>% 
  pivot_longer(-c(Tube_code, time_point),
               names_to = "trait",
               values_to = "value") %>%
  group_by(trait) %>%
  summarise(p_value = wilcox.test(value ~ time_point)$p.value) %>%
  mutate(p_adjust = p.adjust(p_value, method = "BH")) %>%
  filter(p_adjust < 0.05) %>%
  remove_rownames() %>% 
  left_join(., uniqueGIFT_db, by=join_by("trait"=="Code_element"))
element_gift_sig <- element_gift %>%
  select(Tube_code, all_of(intersect(
    significant_element$trait,
    colnames(element_gift)
  ))) %>%
  left_join(., sample_metadata[c(1, 6, 8 )], by = join_by(Tube_code == Tube_code)) %>%
  filter(time_point %in% c("FMT1","Acclimation"))%>%
  filter(type=="Cold_intervention")
  
difference_table <- element_gift_sig %>%
  select(-Tube_code, -type) %>%
  group_by(time_point) %>%
  summarise(across(everything(), mean)) %>%
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric) %>%
  rownames_to_column(., "Elements") %>%
  left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>% 
  arrange(Function) %>% 
  mutate(Difference=Acclimation-FMT1)%>% 
  mutate(group_color = ifelse(Difference <0,"FMT1", "Acclimation")) 
difference_table %>%
  ggplot(aes(x=forcats::fct_reorder(Function,Difference), y=Difference, fill=group_color)) + 
  geom_col() +
  scale_fill_manual(values=c("#76b183",'#008080')) + 
  geom_hline(yintercept=0) + 
  coord_flip()+
  theme(axis.text = element_text(size = 10),
        axis.title = element_text(size = 12),
        legend.position = "right", 
        legend.title = element_blank(),
        panel.background = element_blank(),
        panel.grid.major = element_line(size = 0.15, linetype = 'solid',
                                        colour = "grey"))+
  xlab("Function") + 
  ylab("Mean difference")

CC from acclimation to FMT1

significant_element<-element_gift %>%
  filter(time_point %in% c("FMT1","Acclimation") & type == "Cold_control") %>%
  select(-time_point, -type) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(Tube_code, where( ~ is.numeric(.) && sum(.) > 0)) %>%
  left_join(sample_metadata[c(1, 8)], by = "Tube_code") %>% 
  pivot_longer(-c(Tube_code, time_point),
               names_to = "trait",
               values_to = "value") %>%
  group_by(trait) %>%
  summarise(p_value = wilcox.test(value ~ time_point)$p.value) %>%
  mutate(p_adjust = p.adjust(p_value, method = "BH")) %>%
  filter(p_adjust < 0.05) %>%
  remove_rownames() %>% 
  left_join(., uniqueGIFT_db, by=join_by("trait"=="Code_element"))
element_gift_sig <- element_gift %>%
  select(Tube_code, all_of(intersect(
    significant_element$trait,
    colnames(element_gift)
  ))) %>%
  left_join(., sample_metadata[c(1, 6, 8)], by = join_by(Tube_code == Tube_code)) %>%
  filter(time_point %in% c("FMT1","Acclimation"))%>%
  filter(type=="Cold_control")
  
difference_table <- element_gift_sig %>%
  select(-Tube_code, -type) %>%
  group_by(time_point) %>%
  summarise(across(everything(), mean)) %>%
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric) %>%
  rownames_to_column(., "Elements") %>%
  left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>% 
  arrange(Function) %>% 
  mutate(Difference=Acclimation-FMT1)%>% 
  mutate(group_color = ifelse(Difference <0,"FMT1", "Acclimation")) 
difference_table %>%
  ggplot(aes(x=forcats::fct_reorder(Function,Difference), y=Difference, fill=group_color)) + 
  geom_col() +
  scale_fill_manual(values=c("#4477AA",'#008080')) + 
  geom_hline(yintercept=0) + 
  coord_flip()+
  theme(axis.text = element_text(size = 10),
        axis.title = element_text(size = 12),
        legend.position = "right", 
        legend.title = element_blank(),
        panel.background = element_blank(),
        panel.grid.major = element_line(size = 0.15, linetype = 'solid',
                                        colour = "grey"))+
  xlab("Function") + 
  ylab("Mean difference")

WC from acclimation to FMT1

element_gift %>%
  filter(time_point %in% c("FMT1","Acclimation") & type == "Warm_control") %>%
  select(-time_point, -type) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(Tube_code, where( ~ is.numeric(.) && sum(.) > 0)) %>%
  left_join(sample_metadata[c(1, 8)], by = "Tube_code") %>% 
  pivot_longer(-c(Tube_code, time_point),
               names_to = "trait",
               values_to = "value") %>%
  group_by(trait) %>%
  summarise(p_value = wilcox.test(value ~ time_point)$p.value) %>%
  mutate(p_adjust = p.adjust(p_value, method = "BH")) %>%
  filter(p_adjust < 0.05) %>%
  remove_rownames() %>% 
  left_join(., uniqueGIFT_db, by=join_by("trait"=="Code_element"))
# A tibble: 0 × 6
# ℹ 6 variables: trait <chr>, p_value <dbl>, p_adjust <dbl>, Domain <chr>, Function <chr>, Element <chr>

15.5.3 Differential abundances

15.5.3.1 CI: acclimation vs FMT1

Structural zeros

struc <- structural_zeros %>% 
  filter(present=="Acclimation")%>% 
  count(phylum, name = "Acclimation") %>%
  arrange(desc(Acclimation))
structural_zeros %>% 
  filter(present=="FMT1")%>% 
  count(phylum, name = "FMT1") %>%
  arrange(desc(FMT1)) %>% 
  full_join(., struc, by="phylum") %>%
  mutate(across(everything(), ~ ifelse(is.na(.), 0, .))) %>% 
  tt()
phylum FMT1 Acclimation
p__Bacteroidota 33 11
p__Bacillota_A 25 16
p__Pseudomonadota 5 8
p__Desulfobacterota 4 2
p__Bacillota 3 9
p__Campylobacterota 2 0
p__Cyanobacteriota 2 2
p__Bacillota_C 1 1
p__Elusimicrobiota 1 0
p__Verrucomicrobiota 0 2
p__Actinomycetota 0 1
p__Bacillota_B 0 1
phylo_samples <- sample_metadata %>%
  filter(type == "Cold_intervention" & time_point %in% c("Acclimation", "FMT1") )%>% 
  column_to_rownames("Tube_code") %>% 
  sample_data()
phylo_genome <- genome_counts_filt %>% 
  filter(!genome %in% structural_zeros$genome) %>% 
  select(one_of(c("genome",rownames(phylo_samples)))) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
  column_to_rownames("genome") %>% 
  otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>% 
  filter(genome %in% rownames(phylo_genome)) %>% 
  column_to_rownames("genome") %>% 
  dplyr::select(domain,phylum,class,order,family,genus,species) %>% 
  as.matrix() %>% 
  tax_table()

physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)
ancom_rand_output_ci_accli_fmt1 = ancombc2(data = physeq_genome_filtered, 
                  assay_name = "counts", 
                  tax_level = NULL,
                  fix_formula = "time_point", 
                  p_adj_method = "holm", 
                  pseudo_sens = TRUE,
                  prv_cut =0, 
                  lib_cut = 0, 
                  s0_perc = 0.05,
                  group = NULL, 
                  struc_zero = FALSE, 
                  neg_lb = FALSE,
                  alpha = 0.05, 
                  n_cl = 2, 
                  verbose = TRUE,
                  global = FALSE, 
                  pairwise = FALSE, 
                  dunnet = FALSE, 
                  trend = FALSE,
                  iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
                  em_control = list(tol = 1e-5, max_iter = 100),
                  mdfdr_control = list(fwer_ctrl_method = "holm", B = 100), 
                  trend_control = NULL)
save(ancom_rand_output_ci_accli_fmt1, file="data/ancom_rand_output_ci_accli_fmt1.RData")
load("data/ancom_rand_output_ci_accli_fmt1.RData")
ancom_rand_output_ci_accli_fmt1$res %>%
  dplyr::select(taxon, lfc_time_pointFMT1, p_time_pointFMT1) %>%
  filter(p_time_pointFMT1 < 0.05) %>% 
  left_join(., genome_metadata, by=join_by("taxon"=="genome")) %>% 
  select(2,3,7,8,9) %>% 
  tt()  
lfc_time_pointFMT1 p_time_pointFMT1 order family genus
-1.8462367 0.0286090261 o__Bacteroidales f__Rikenellaceae g__Alistipes
-1.0602262 0.0256488405 o__Campylobacterales f__Helicobacteraceae g__Helicobacter_J
-2.1031126 0.0039988943 o__Mycoplasmatales f__Mycoplasmoidaceae g__Mycoplasmoides
-1.1937360 0.0258952249 o__Lachnospirales f__Lachnospiraceae g__Hungatella_A
1.1869122 0.0246642650 o__Oscillospirales f__Ruminococcaceae g__Negativibacillus
-3.0923830 0.0007999100 o__Erysipelotrichales f__Coprobacillaceae g__Coprobacillus
-1.2524541 0.0482834029 o__Opitutales f__LL51 g__
-1.2157647 0.0209074696 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
-2.1668443 0.0092167448 o__Gastranaerophilales f__Gastranaerophilaceae g__Scatousia
1.8856206 0.0022558153 o__Lachnospirales f__Lachnospiraceae g__
-1.2811877 0.0290779856 o__Bacteroidales f__Marinifilaceae g__Odoribacter
-0.9960276 0.0294171519 o__Selenomonadales f__ g__
-1.9064058 0.0121488844 o__Lachnospirales f__Lachnospiraceae g__CAG-95
-2.0548675 0.0169404933 o__Christensenellales f__ g__
-1.8189515 0.0001244128 o__Bacteroidales f__Marinifilaceae g__Odoribacter
1.0549620 0.0254528501 o__Erysipelotrichales f__Erysipelotrichaceae g__Clostridium_AQ
-1.4937622 0.0113515485 o__Bacteroidales f__Tannerellaceae g__Parabacteroides_B
1.9263692 0.0019001955 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
  rownames_to_column(., "taxon") %>%
  mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))

ancombc_rand_table_mag <- ancom_rand_output_ci_accli_fmt1$res %>%
  dplyr::select(taxon, lfc_time_pointFMT1, p_time_pointFMT1) %>%
  #filter(p_time_pointFMT1 < 0.05) %>%
  dplyr::arrange(p_time_pointFMT1) %>%
  merge(., taxonomy, by="taxon") %>%
  mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
  dplyr::arrange(lfc_time_pointFMT1)

ancombc_rand_table_mag
                   taxon lfc_time_pointFMT1 p_time_pointFMT1      domain            phylum                  class                order               family
1  AH1_2nd_18:bin_000011       -3.092382977     0.0007999100 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales     Coprobacillaceae
2   AH1_2nd_2:bin_000003       -2.648161454     1.0000000000 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
3   AH1_2nd_1:bin_000003       -2.166844294     0.0092167448 d__Bacteria   Cyanobacteriota    c__Vampirovibrionia  Gastranaerophilales Gastranaerophilaceae
4  AH1_2nd_12:bin_000041       -2.103112630     0.0039988943 d__Bacteria         Bacillota             c__Bacilli      Mycoplasmatales    Mycoplasmoidaceae
5   LI1_2nd_4:bin_000001       -2.054867498     0.0169404933 d__Bacteria       Bacillota_A          c__Clostridia   Christensenellales                     
6   AH1_2nd_8:bin_000006       -1.906405809     0.0121488844 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
7  AH1_2nd_10:bin_000041       -1.846236702     0.0286090261 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
8   LI1_2nd_4:bin_000026       -1.818951547     0.0001244128 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Marinifilaceae
9  AH1_2nd_10:bin_000040       -1.684889357     1.0000000000 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
10 AH1_2nd_19:bin_000011       -1.494726874     0.0611399521 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
11  LI1_2nd_7:bin_000042       -1.493762171     0.0113515485 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
12 AH1_2nd_19:bin_000072       -1.478268874     1.0000000000 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
13 AH1_2nd_14:bin_000015       -1.316753957     0.1424337358 d__Bacteria       Bacillota_A          c__Clostridia   Christensenellales              UBA3700
14  AH1_2nd_1:bin_000039       -1.281187716     0.0290779856 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Marinifilaceae
15 AH1_2nd_19:bin_000052       -1.252454135     0.0482834029 d__Bacteria Verrucomicrobiota    c__Verrucomicrobiae           Opitutales                 LL51
16 AH1_2nd_19:bin_000067       -1.215764663     0.0209074696 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
17 AH1_2nd_14:bin_000003       -1.193736037     0.0258952249 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
18 AH1_2nd_18:bin_000024       -1.188731159     0.0611452591 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Marinifilaceae
19  AH1_2nd_9:bin_000002       -1.169209782     0.0986538496 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
20 AH1_2nd_12:bin_000012       -1.060226151     0.0256488405 d__Bacteria  Campylobacterota     c__Campylobacteria    Campylobacterales    Helicobacteraceae
21  AH1_2nd_5:bin_000001       -0.996027576     0.0294171519 d__Bacteria       Bacillota_C       c__Negativicutes      Selenomonadales                     
22  LI1_2nd_9:bin_000022       -0.906243708     0.0903292981 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
23  LI1_2nd_5:bin_000013       -0.829604319     0.1527144304 d__Bacteria       Bacillota_A          c__Clostridia   Christensenellales               DTU072
24 AH1_2nd_12:bin_000019       -0.825145331     0.2042360107 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
25 AH1_2nd_15:bin_000013       -0.710209451     0.1048903811 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
26 AH1_2nd_14:bin_000052       -0.703781720     0.0836982274 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
27 AH1_2nd_18:bin_000041       -0.639488073     0.1767526356 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
28 AH1_2nd_10:bin_000069       -0.638476918     0.1756392299 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
29  LI1_2nd_8:bin_000019       -0.626058321     0.1873913604 d__Bacteria       Bacillota_A          c__Clostridia   Christensenellales              UBA3700
30  LI1_2nd_8:bin_000048       -0.604410683     0.1802313047 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
31 AH1_2nd_18:bin_000039       -0.565089676     0.1344504970 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
32 AH1_2nd_15:bin_000001       -0.558917827     0.2775215236 d__Bacteria    Pseudomonadota c__Alphaproteobacteria          Rhizobiales         Rhizobiaceae
33  LI1_2nd_1:bin_000014       -0.541762433     0.1908782875 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
34 AH1_2nd_17:bin_000020       -0.529683120     0.1375747225 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
35  AH1_2nd_5:bin_000037       -0.412726510     0.3766702653 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
36  LI1_2nd_8:bin_000030       -0.401958059     1.0000000000 d__Bacteria    Actinomycetota       c__Actinomycetia      Mycobacteriales     Mycobacteriaceae
37  AH1_2nd_8:bin_000027       -0.372699058     0.3929034840 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
38 AH1_2nd_20:bin_000016       -0.367964849     0.4149817314 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
39 AH1_2nd_15:bin_000004       -0.363232962     0.4110273927 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
40 AH1_2nd_20:bin_000061       -0.298108663     0.5019948183 d__Bacteria         Bacillota             c__Bacilli      Lactobacillales      Enterococcaceae
41 AH1_2nd_19:bin_000050       -0.289132629     0.4961320864 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
42 AH1_2nd_14:bin_000063       -0.241075741     0.4791871743 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
43 AH1_2nd_12:bin_000018       -0.233278943     1.0000000000 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
44 AH1_2nd_14:bin_000014       -0.191639074     0.5967459585 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
45  AH1_2nd_5:bin_000069       -0.113362480     0.7480149690 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
46  AH1_2nd_5:bin_000004       -0.099553779     0.7766158242 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales   Acutalibacteraceae
47 AH1_2nd_19:bin_000053       -0.064499564     0.8633425245 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
48  AH1_2nd_5:bin_000023       -0.061255060     0.8885990209 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
49  LI1_2nd_4:bin_000052       -0.059179520     0.8521593297 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
50  AH1_2nd_7:bin_000011       -0.022457084     0.9485771277 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
51  AH1_2nd_7:bin_000036       -0.020211734     0.9505096511 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
52  AH1_2nd_8:bin_000007       -0.015776367     0.9642381855 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
53 AH1_2nd_18:bin_000033        0.007439884     0.9829288918 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales     Coprobacillaceae
54 AH1_2nd_13:bin_000049        0.007967211     0.9806505882 d__Bacteria       Bacillota_A          c__Clostridia   Christensenellales              UBA3700
55 AH1_2nd_20:bin_000075        0.011269835     0.9740329519 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
56  AH1_2nd_1:bin_000048        0.022520775     0.9415136028 d__Bacteria       Bacillota_A          c__Clostridia Peptostreptococcales     Anaerovoracaceae
57 AH1_2nd_15:bin_000009        0.050832331     0.8809383092 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
58  LI1_2nd_3:bin_000015        0.100951096     0.7675764926 d__Bacteria         Bacillota             c__Bacilli     Staphylococcales    Staphylococcaceae
59 AH1_2nd_12:bin_000008        0.126572793     0.7200772057 d__Bacteria         Bacillota             c__Bacilli      Lactobacillales     Streptococcaceae
60  AH1_2nd_6:bin_000046        0.148642513     0.7391254614 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
61 AH1_2nd_15:bin_000043        0.162855259     0.6651236201 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
62 AH1_2nd_14:bin_000032        0.203085142     0.5604935050 d__Bacteria       Bacillota_C       c__Negativicutes      Selenomonadales   Massilibacillaceae
63 AH1_2nd_11:bin_000028        0.215783039     0.6001649151 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
64 AH1_2nd_19:bin_000055        0.241280202     0.5605744834 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
65  AH1_2nd_1:bin_000015        0.248363743     0.5365901183 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
66  LI1_2nd_1:bin_000006        0.256745957     0.4812257132 d__Bacteria       Bacillota_B         c__Peptococcia        Peptococcales       Peptococcaceae
67  LI1_2nd_4:bin_000041        0.275507297     0.4771321706 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
68  AH1_2nd_8:bin_000051        0.409027135     0.2422754936 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
69  LI1_2nd_3:bin_000003        0.426226521     0.3026156952 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
70 AH1_2nd_11:bin_000005        0.439025859     0.3469594997 d__Bacteria    Fusobacteriota       c__Fusobacteriia      Fusobacteriales     Fusobacteriaceae
71  LI1_2nd_8:bin_000016        0.449295795     0.2725481226 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
72  AH1_2nd_9:bin_000047        0.468455027     0.1949450949 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
73 AH1_2nd_16:bin_000045        0.477451825     0.3015275739 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
74  AH1_2nd_1:bin_000002        0.672741699     0.0931456403 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
75  LI1_2nd_4:bin_000034        0.683769866     0.1489775197 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
76  LI1_2nd_8:bin_000070        0.715744805     0.0557648829 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
77  LI1_2nd_8:bin_000079        0.759315418     0.1169813633 d__Bacteria    Pseudomonadota c__Gammaproteobacteria     Enterobacterales   Enterobacteriaceae
78  LI1_2nd_7:bin_000009        0.778541309     0.0871078423 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
79  LI1_2nd_7:bin_000078        0.818012844     0.2168112843 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
80  AH1_2nd_7:bin_000027        0.898315397     1.0000000000 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
81  AH1_2nd_7:bin_000041        0.917073058     0.0786806187 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
82  AH1_2nd_7:bin_000004        0.930226516     0.0840011143 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
83 AH1_2nd_16:bin_000058        1.019983368     1.0000000000 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
84  LI1_2nd_7:bin_000016        1.054961961     0.0254528501 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
85 AH1_2nd_16:bin_000025        1.186912214     0.0246642650 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
86  AH1_2nd_1:bin_000034        1.307370374     0.1316029549 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
87 AH1_2nd_12:bin_000007        1.669993570     1.0000000000 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
88  AH1_2nd_1:bin_000023        1.885620641     0.0022558153 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
89  LI1_2nd_8:bin_000064        1.926369204     0.0019001955 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
90 AH1_2nd_20:bin_000042        1.959227946     1.0000000000 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
                  genus                      species
1         Coprobacillus                             
2              JAAYNV01                             
3             Scatousia                             
4        Mycoplasmoides                             
5                                                   
6                CAG-95                             
7             Alistipes                             
8           Odoribacter                             
9                UBA866                             
10            Mailhella                             
11    Parabacteroides_B                             
12                                                  
13                                                  
14          Odoribacter                             
15                                                  
16          Bacteroides           Bacteroides ovatus
17         Hungatella_A                             
18          Odoribacter                             
19          Phocaeicola                             
20       Helicobacter_J                             
21                                                  
22        Oscillibacter                             
23                                                  
24                                                  
25          Ventrimonas                             
26          Bacteroides                             
27          Bacteroides                             
28          Bacteroides                             
29                                                  
30                                                  
31            Alistipes                             
32        Agrobacterium  Agrobacterium tumefaciens_H
33                                                  
34        Clostridium_Q                             
35 Pseudoflavonifractor                             
36      Corynebacterium                             
37               NSJ-61                             
38                                                  
39             UMGS1251                             
40         Enterococcus                             
41                                                  
42            Blautia_A                             
43            Alistipes                             
44      Marseille-P3106                             
45          Bacteroides                             
46                                                  
47               CAG-56                             
48              Blautia                             
49        Enterocloster                             
50         Lacrimispora                             
51       Intestinimonas                             
52               Dielma                             
53              Beduini                             
54                                                  
55            Mailhella                             
56                                                  
57        Acetatifactor                             
58       Staphylococcus        Staphylococcus shinii
59          Lactococcus      Lactococcus formosensis
60          Bacteroides                             
61          Bacteroides                             
62                                                  
63          Bacteroides                             
64      Parabacteroides                             
65           MGBC136627                             
66             RGIG6463                             
67        Clostridium_Q                             
68          Bacteroides                             
69            Alistipes                             
70      Fusobacterium_A     Fusobacterium_A ulcerans
71            Rikenella                             
72          Bacteroides                             
73            Alistipes                             
74         Fournierella                             
75          Bacteroides Bacteroides thetaiotaomicron
76          Bacteroides                             
77        Citrobacter_A   Citrobacter_A amalonaticus
78        Anaerotruncus                             
79           Copromonas                             
80           Copromonas                             
81                                                  
82       Eisenbergiella                             
83        Enterocloster                             
84       Clostridium_AQ                             
85     Negativibacillus                             
86               Dielma                             
87                                                  
88                                                  
89      Parabacteroides                             
90           Hungatella                             
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
  mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", ""))  %>%
  right_join(taxonomy, by=join_by(phylum == phylum)) %>%
  dplyr::select(phylum, colors) %>%
  mutate(colors = str_c(colors, "80"))  %>% #add 80% alpha
    unique() %>%
    dplyr::arrange(phylum)

tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
  
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
    dplyr::arrange(phylum) %>%
    dplyr::select(colors) %>%
    pull()
ancombc_rand_table_mag %>%
  mutate(
    genome = factor(taxon, levels = ancombc_rand_table_mag$taxon),
    significance = ifelse(p_time_pointFMT1 < 0.05, phylum, NA)  # Set non-significant to NA (not mapped in legend)
  ) %>%
  ggplot() +
  # Plot significant points with legend
  geom_point(aes(x = lfc_time_pointFMT1, y = -log10(p_time_pointFMT1), color = significance), 
             size = 3, alpha = 0.7, na.rm = TRUE) +  
  # Plot non-significant points separately without legend
  geom_point(data = filter(ancombc_rand_table_mag, p_time_pointFMT1 >= 0.05),
             aes(x = lfc_time_pointFMT1, y = -log10(p_time_pointFMT1)), 
             color = "grey70", size = 3, alpha = 0.7, show.legend = FALSE) +
  scale_color_manual(
    values = tax_color,  # Only keeps phylum colors in legend
    na.translate = FALSE  # Removes NA (non-significant) from legend
  ) + 
  geom_hline(yintercept = -log10(0.05), linetype = "dashed") +  
  geom_vline(xintercept = 0, linetype = "dashed") +
  scale_y_continuous(limits = c(0, 4.5)) +  
  xlab("log2FoldChange") + 
  ylab("-log10(p-value)") +
  guides(color = guide_legend(title = "Phylum")) +  
  theme_minimal()+ 
  annotate("text", x = min(ancombc_rand_table_mag$lfc_time_pointFMT1), y = 4.5, 
           label = "Acclimation", hjust = 0, size = 4, fontface = "bold") +
  annotate("text", x = max(ancombc_rand_table_mag$lfc_time_pointFMT1), y = 4.5, 
           label = "FMT1", hjust = 1, size = 4, fontface = "bold")

Phyla of the significant MAGs in FMT1

ancombc_rand_table_mag%>%
  filter(p_time_pointFMT1 < 0.05) %>%
  filter(lfc_time_pointFMT1>0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
        phylum sample_count
1  Bacillota_A            2
2    Bacillota            1
3 Bacteroidota            1

Phyla of the significant MAGs in acclimation

ancombc_rand_table_mag%>%
    filter(p_time_pointFMT1 < 0.05) %>%
  filter(lfc_time_pointFMT1<0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
             phylum sample_count
1      Bacteroidota            5
2       Bacillota_A            3
3         Bacillota            2
4       Bacillota_C            1
5  Campylobacterota            1
6   Cyanobacteriota            1
7 Verrucomicrobiota            1

15.5.3.2 CC: acclimation vs FMT1

Structural zeros

struc <- structural_zeros %>% 
  filter(present=="Acclimation")%>% 
  count(phylum, name = "Acclimation") %>%
  arrange(desc(Acclimation))
structural_zeros %>% 
  filter(present=="FMT1")%>% 
  count(phylum, name = "FMT1") %>%
  arrange(desc(FMT1)) %>% 
  full_join(., struc, by="phylum") %>%
  mutate(across(everything(), ~ ifelse(is.na(.), 0, .))) %>% 
  tt()
phylum FMT1 Acclimation
p__Bacillota_A 15 20
p__Bacteroidota 10 8
p__Bacillota 4 8
p__Bacillota_C 3 0
p__Actinomycetota 2 0
p__Desulfobacterota 1 1
p__Fusobacteriota 1 0
p__Pseudomonadota 1 6
p__Cyanobacteriota 0 3
p__Verrucomicrobiota 0 3
p__Campylobacterota 0 1
phylo_samples <- sample_metadata %>%
  filter(type == "Cold_control" & time_point %in% c("Acclimation", "FMT1") )%>% 
  column_to_rownames("Tube_code") %>% 
  sample_data()
phylo_genome <- genome_counts_filt %>% 
  filter(!genome %in% structural_zeros$genome) %>% 
  select(one_of(c("genome",rownames(phylo_samples)))) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
  column_to_rownames("genome") %>% 
  otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>% 
  filter(genome %in% rownames(phylo_genome)) %>% 
  column_to_rownames("genome") %>% 
  dplyr::select(domain,phylum,class,order,family,genus,species) %>% 
  as.matrix() %>% 
  tax_table()

physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)
ancom_rand_output_cc_accli_fmt1 = ancombc2(data = physeq_genome_filtered, 
                  assay_name = "counts", 
                  tax_level = NULL,
                  fix_formula = "time_point", 
                  rand_formula = "(1|individual)",
                  p_adj_method = "holm", 
                  pseudo_sens = TRUE,
                  prv_cut =0, 
                  lib_cut = 0, 
                  s0_perc = 0.05,
                  group = NULL, 
                  struc_zero = FALSE, 
                  neg_lb = FALSE,
                  alpha = 0.05, 
                  n_cl = 2, 
                  verbose = TRUE,
                  global = FALSE, 
                  pairwise = FALSE, 
                  dunnet = FALSE, 
                  trend = FALSE,
                  iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
                  em_control = list(tol = 1e-5, max_iter = 100),
                  lme_control = lme4::lmerControl(),
                  mdfdr_control = list(fwer_ctrl_method = "holm", B = 100), 
                  trend_control = NULL)
save(ancom_rand_output_cc_accli_fmt1, file="data/ancom_rand_output_cc_accli_fmt1.RData")
load("data/ancom_rand_output_cc_accli_fmt1.RData")
ancom_rand_output_cc_accli_fmt1$res %>%
  dplyr::select(taxon, lfc_time_pointFMT1, p_time_pointFMT1) %>%
  filter(p_time_pointFMT1 < 0.05) %>% 
  left_join(., genome_metadata, by=join_by("taxon"=="genome")) %>% 
  select(2,3,7,8,9) %>% 
  tt()  
lfc_time_pointFMT1 p_time_pointFMT1 order family genus
-0.05294644 1.020782e-03 o__Bacteroidales f__Rikenellaceae g__Alistipes
-2.00026643 4.298128e-03 o__Mycoplasmatales f__Mycoplasmoidaceae g__Mycoplasmoides
0.35440645 1.512560e-08 o__Rhizobiales f__Rhizobiaceae g__Agrobacterium
1.17164883 1.483703e-02 o__Lachnospirales f__Lachnospiraceae g__Clostridium_Q
0.63703919 5.965904e-03 o__Bacteroidales f__Marinifilaceae g__Odoribacter
-1.55106118 9.006749e-03 o__Lachnospirales f__Lachnospiraceae g__Roseburia
0.84138271 2.415877e-10 o__Desulfovibrionales f__Desulfovibrionaceae g__Mailhella
-1.88284515 2.223632e-03 o__Opitutales f__LL51 g__
2.40157567 3.593438e-03 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
-1.02439559 3.132840e-02 o__Gastranaerophilales f__Gastranaerophilaceae g__Scatousia
2.27246087 6.049789e-04 o__Lachnospirales f__Lachnospiraceae g__
2.09918735 2.272274e-02 o__Erysipelotrichales f__Erysipelotrichaceae g__Dielma
-0.13201767 6.157531e-07 o__Oscillospirales f__Acutalibacteraceae g__
0.41463549 7.396983e-08 o__Lachnospirales f__Lachnospiraceae g__Blautia
1.60289164 2.561034e-02 o__Lachnospirales f__Lachnospiraceae g__Lacrimispora
1.15547613 4.032184e-02 o__Lachnospirales f__Lachnospiraceae g__Copromonas
0.98965563 3.228020e-02 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
-1.61791528 7.080058e-10 o__Lachnospirales f__Lachnospiraceae g__CAG-95
-0.03682354 2.173338e-02 o__Erysipelotrichales f__Erysipelotrichaceae g__Dielma
0.76092641 3.213289e-02 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
-0.33664976 8.276106e-06 o__Bacteroidales f__Bacteroidaceae g__
1.71934159 8.435943e-03 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
1.69860100 1.457330e-03 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
  rownames_to_column(., "taxon") %>%
  mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))

ancombc_rand_table_mag <- ancom_rand_output_cc_accli_fmt1$res %>%
  dplyr::select(taxon, lfc_time_pointFMT1, p_time_pointFMT1) %>%
  #filter(p_time_pointFMT1 < 0.05) %>%
  dplyr::arrange(p_time_pointFMT1) %>%
  merge(., taxonomy, by="taxon") %>%
  mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
  dplyr::arrange(lfc_time_pointFMT1)

ancombc_rand_table_mag
                    taxon lfc_time_pointFMT1 p_time_pointFMT1      domain            phylum                  class                order               family
1   AH1_2nd_12:bin_000041       -2.000266425     4.298128e-03 d__Bacteria         Bacillota             c__Bacilli      Mycoplasmatales    Mycoplasmoidaceae
2   AH1_2nd_19:bin_000052       -1.882845155     2.223632e-03 d__Bacteria Verrucomicrobiota    c__Verrucomicrobiae           Opitutales                 LL51
3    AH1_2nd_1:bin_000005       -1.665135795     2.966206e-01 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
4   AH1_2nd_13:bin_000029       -1.645734439     1.300459e-01 d__Bacteria    Pseudomonadota c__Alphaproteobacteria              UBA3830              UBA3830
5    AH1_2nd_8:bin_000006       -1.617915280     7.080058e-10 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
6   AH1_2nd_19:bin_000005       -1.551061184     9.006749e-03 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
7    AH1_2nd_7:bin_000015       -1.548997604     1.029942e-01 d__Bacteria    Pseudomonadota c__Alphaproteobacteria                 RF32              CAG-239
8    LI1_2nd_1:bin_000014       -1.344212147     1.794418e-01 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
9    LI1_2nd_7:bin_000042       -1.283364395     7.717019e-02 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
10   AH1_2nd_1:bin_000003       -1.024395595     3.132840e-02 d__Bacteria   Cyanobacteriota    c__Vampirovibrionia  Gastranaerophilales Gastranaerophilaceae
11  AH1_2nd_12:bin_000012       -0.857025351     9.239810e-02 d__Bacteria  Campylobacterota     c__Campylobacteria    Campylobacterales    Helicobacteraceae
12  AH1_2nd_12:bin_000056       -0.630383266     4.846583e-01 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
13   AH1_2nd_8:bin_000027       -0.476488990     6.481804e-01 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
14  AH1_2nd_15:bin_000043       -0.469767220     5.882203e-01 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
15  AH1_2nd_15:bin_000002       -0.458253339     9.329558e-02 d__Bacteria   Cyanobacteriota    c__Vampirovibrionia  Gastranaerophilales Gastranaerophilaceae
16  AH1_2nd_19:bin_000001       -0.451145097     5.092757e-01 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
17   AH1_2nd_5:bin_000069       -0.414686954     4.056860e-01 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
18  AH1_2nd_12:bin_000008       -0.345661076     7.669333e-01 d__Bacteria         Bacillota             c__Bacilli      Lactobacillales     Streptococcaceae
19   LI1_2nd_4:bin_000036       -0.336649759     8.276106e-06 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
20  AH1_2nd_14:bin_000063       -0.332541685     6.714184e-01 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
21   LI1_2nd_5:bin_000013       -0.325271149     5.715231e-01 d__Bacteria       Bacillota_A          c__Clostridia   Christensenellales               DTU072
22  AH1_2nd_10:bin_000069       -0.318041295     9.433433e-02 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
23  AH1_2nd_14:bin_000003       -0.288272311     1.670150e-01 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
24  AH1_2nd_15:bin_000021       -0.277614214     5.981331e-01 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
25  AH1_2nd_19:bin_000053       -0.218579282     5.310912e-01 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
26   AH1_2nd_5:bin_000004       -0.132017667     6.157531e-07 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales   Acutalibacteraceae
27   AH1_2nd_9:bin_000002       -0.119671900     8.463868e-01 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
28  AH1_2nd_18:bin_000013       -0.102856803     6.148871e-01 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
29  AH1_2nd_10:bin_000010       -0.056703910     4.735064e-01 d__Bacteria   Cyanobacteriota    c__Vampirovibrionia  Gastranaerophilales Gastranaerophilaceae
30  AH1_2nd_10:bin_000041       -0.052946441     1.020782e-03 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
31   AH1_2nd_8:bin_000007       -0.036823541     2.173338e-02 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
32   LI1_2nd_4:bin_000041        0.007852236     9.864813e-01 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
33   LI1_2nd_8:bin_000019        0.042559551     9.547561e-01 d__Bacteria       Bacillota_A          c__Clostridia   Christensenellales              UBA3700
34   AH1_2nd_1:bin_000002        0.082912552     9.269474e-01 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
35  AH1_2nd_15:bin_000009        0.118943844     7.743671e-01 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
36  AH1_2nd_10:bin_000009        0.132804718     9.229210e-01 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
37  AH1_2nd_19:bin_000050        0.208408084     5.553207e-01 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
38   AH1_2nd_9:bin_000047        0.267209131     4.171579e-01 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
39   AH1_2nd_7:bin_000004        0.289820892     6.930117e-01 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
40  AH1_2nd_15:bin_000001        0.354406452     1.512560e-08 d__Bacteria    Pseudomonadota c__Alphaproteobacteria          Rhizobiales         Rhizobiaceae
41  AH1_2nd_16:bin_000045        0.357010392     8.352287e-02 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
42   AH1_2nd_5:bin_000023        0.414635489     7.396983e-08 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
43   LI1_2nd_7:bin_000016        0.436780747     4.912489e-01 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
44  AH1_2nd_12:bin_000018        0.515214110     3.343744e-01 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
45   AH1_2nd_9:bin_000015        0.517317627     2.691657e-01 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
46   AH1_2nd_7:bin_000041        0.572340514     2.017542e-01 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
47  AH1_2nd_17:bin_000029        0.630370592     2.395506e-01 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
48   AH1_2nd_7:bin_000006        0.630734317     6.606338e-01 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
49  AH1_2nd_18:bin_000024        0.637039187     5.965904e-03 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Marinifilaceae
50  AH1_2nd_15:bin_000004        0.646830855     6.362064e-02 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
51  AH1_2nd_14:bin_000052        0.660179503     2.931944e-01 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
52   AH1_2nd_8:bin_000051        0.760926411     3.213289e-02 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
53   LI1_2nd_1:bin_000006        0.827553585     1.589541e-01 d__Bacteria       Bacillota_B         c__Peptococcia        Peptococcales       Peptococcaceae
54  AH1_2nd_19:bin_000011        0.841382706     2.415877e-10 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
55   AH1_2nd_7:bin_000036        0.913967361     5.945868e-02 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
56   AH1_2nd_7:bin_000065        0.989655634     3.228020e-02 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
57   LI1_2nd_8:bin_000048        1.004333054     2.120711e-01 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
58   AH1_2nd_7:bin_000027        1.155476129     4.032184e-02 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
59  AH1_2nd_17:bin_000020        1.171648828     1.483703e-02 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
60   AH1_2nd_7:bin_000011        1.602891637     2.561034e-02 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
61   LI1_2nd_8:bin_000070        1.698601003     1.457330e-03 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
62   LI1_2nd_8:bin_000064        1.719341585     8.435943e-03 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
63  AH1_2nd_18:bin_000041        1.801032415     1.225818e-01 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
64   AH1_2nd_1:bin_000034        2.099187351     2.272274e-02 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
65   AH1_2nd_1:bin_000023        2.272460867     6.049789e-04 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
66  AH1_2nd_19:bin_000055        2.401575666     3.593438e-03 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
67  AH1_2nd_11:bin_000028        2.669065282     7.236994e-02 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
68   AH1_2nd_1:bin_000015                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
69   AH1_2nd_1:bin_000048                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia Peptostreptococcales     Anaerovoracaceae
70  AH1_2nd_10:bin_000049                 NA     1.000000e+00 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
71  AH1_2nd_11:bin_000004                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
72  AH1_2nd_11:bin_000009                 NA     1.000000e+00 d__Bacteria    Pseudomonadota c__Alphaproteobacteria                 RF32              CAG-239
73  AH1_2nd_12:bin_000007                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
74  AH1_2nd_12:bin_000009                 NA     1.000000e+00 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
75  AH1_2nd_12:bin_000044                 NA     1.000000e+00 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
76  AH1_2nd_12:bin_000063                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
77  AH1_2nd_13:bin_000011                 NA     1.000000e+00 d__Bacteria    Pseudomonadota c__Alphaproteobacteria                 RF32              CAG-239
78  AH1_2nd_14:bin_000014                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
79  AH1_2nd_14:bin_000047                 NA     1.000000e+00 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
80  AH1_2nd_15:bin_000013                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
81  AH1_2nd_15:bin_000025                 NA     1.000000e+00 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
82  AH1_2nd_16:bin_000025                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
83  AH1_2nd_16:bin_000058                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
84  AH1_2nd_17:bin_000030                 NA     1.000000e+00 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
85  AH1_2nd_18:bin_000033                 NA     1.000000e+00 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales     Coprobacillaceae
86  AH1_2nd_18:bin_000039                 NA     1.000000e+00 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
87  AH1_2nd_18:bin_000047                 NA     1.000000e+00 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
88  AH1_2nd_19:bin_000067                 NA     1.000000e+00 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
89   AH1_2nd_2:bin_000003                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
90  AH1_2nd_20:bin_000027                 NA     1.000000e+00 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
91  AH1_2nd_20:bin_000061                 NA     1.000000e+00 d__Bacteria         Bacillota             c__Bacilli      Lactobacillales      Enterococcaceae
92  AH1_2nd_20:bin_000073                 NA     1.000000e+00 d__Bacteria         Bacillota             c__Bacilli      Lactobacillales      Enterococcaceae
93   AH1_2nd_5:bin_000037                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
94   AH1_2nd_7:bin_000010                 NA     1.000000e+00 d__Bacteria    Pseudomonadota c__Alphaproteobacteria                 RF32              CAG-239
95   AH1_2nd_7:bin_000017                 NA     1.000000e+00 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
96   AH1_2nd_7:bin_000060                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia        Eubacteriales       Eubacteriaceae
97   AH1_2nd_7:bin_000070                 NA     1.000000e+00 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
98   AH1_2nd_8:bin_000056                 NA     1.000000e+00 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
99  LI1_2nd_10:bin_000017                 NA     1.000000e+00 d__Bacteria       Chlamydiota          c__Chlamydiia         Chlamydiales        Chlamydiaceae
100  LI1_2nd_3:bin_000003                 NA     1.000000e+00 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
                   genus                     species
1         Mycoplasmoides                            
2                                                   
3                                                   
4                                                   
5                 CAG-95                            
6              Roseburia                            
7                 CAZU01                            
8                                                   
9      Parabacteroides_B                            
10             Scatousia                            
11        Helicobacter_J                            
12         Enterocloster                            
13                NSJ-61                            
14           Bacteroides                            
15             Limenecus                            
16       Parabacteroides                            
17           Bacteroides                            
18           Lactococcus     Lactococcus formosensis
19                                                  
20             Blautia_A                            
21                                                  
22           Bacteroides                            
23          Hungatella_A                            
24                                                  
25                CAG-56                            
26                                                  
27           Phocaeicola                            
28       Parabacteroides                            
29              CALURL01                            
30             Alistipes                            
31                Dielma                            
32         Clostridium_Q                            
33                                                  
34          Fournierella                            
35         Acetatifactor                            
36             Bilophila                            
37                                                  
38           Bacteroides                            
39        Eisenbergiella                            
40         Agrobacterium Agrobacterium tumefaciens_H
41             Alistipes                            
42               Blautia                            
43        Clostridium_AQ                            
44             Alistipes                            
45         Desulfovibrio                            
46                                                  
47                NSJ-61                            
48              JALFVM01                            
49           Odoribacter                            
50              UMGS1251                            
51           Bacteroides                            
52           Bacteroides                            
53              RGIG6463                            
54             Mailhella                            
55        Intestinimonas                            
56       Parabacteroides                            
57                                                  
58            Copromonas                            
59         Clostridium_Q                            
60          Lacrimispora                            
61           Bacteroides                            
62       Parabacteroides                            
63           Bacteroides                            
64                Dielma                            
65                                                  
66       Parabacteroides                            
67           Bacteroides                            
68            MGBC136627                            
69                                                  
70       Parabacteroides                            
71          Hungatella_A                            
72             Scatocola                            
73                                                  
74             Alistipes                            
75       Parabacteroides  Parabacteroides distasonis
76                CHH4-2                            
77            MGBC133411                            
78       Marseille-P3106                            
79           Bacteroides                            
80           Ventrimonas                            
81           Phocaeicola                            
82      Negativibacillus                            
83         Enterocloster                            
84           Bacteroides                            
85               Beduini                            
86             Alistipes                            
87       Parabacteroides                            
88           Bacteroides          Bacteroides ovatus
89              JAAYNV01                            
90         Desulfovibrio                            
91          Enterococcus                            
92          Enterococcus    Enterococcus sp002174455
93  Pseudoflavonifractor                            
94              CAJLXD01                            
95              Lawsonia                            
96           Eubacterium                            
97  Pseudoflavonifractor                            
98           Bacteroides                            
99                                                  
100            Alistipes                            
 [ reached 'max' / getOption("max.print") -- omitted 7 rows ]
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
  mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", ""))  %>%
  right_join(taxonomy, by=join_by(phylum == phylum)) %>%
  dplyr::select(phylum, colors) %>%
  mutate(colors = str_c(colors, "80"))  %>% #add 80% alpha
    unique() %>%
    dplyr::arrange(phylum)

tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
  
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
    dplyr::arrange(phylum) %>%
    dplyr::select(colors) %>%
    pull()
ancombc_rand_table_mag %>%
  mutate(
    genome = factor(taxon, levels = ancombc_rand_table_mag$taxon),
    significance = ifelse(p_time_pointFMT1 < 0.05, phylum, NA)  # Set non-significant to NA (not mapped in legend)
  ) %>%
  ggplot() +
  # Plot significant points with legend
  geom_point(aes(x = lfc_time_pointFMT1, y = -log10(p_time_pointFMT1), color = significance), 
             size = 3, alpha = 0.7, na.rm = TRUE) +  
  # Plot non-significant points separately without legend
  geom_point(data = filter(ancombc_rand_table_mag, p_time_pointFMT1 >= 0.05),
             aes(x = lfc_time_pointFMT1, y = -log10(p_time_pointFMT1)), 
             color = "grey70", size = 3, alpha = 0.7, show.legend = FALSE) +
  scale_color_manual(
    values = tax_color,  # Only keeps phylum colors in legend
    na.translate = FALSE  # Removes NA (non-significant) from legend
  ) + 
  geom_hline(yintercept = -log10(0.05), linetype = "dashed") +  
  geom_vline(xintercept = 0, linetype = "dashed") +
  scale_y_continuous(limits = c(0, 11)) + 
  xlab("log2FoldChange") + 
  ylab("-log10(p-value)") +
  guides(color = guide_legend(title = "Phylum")) +  
  theme_minimal()+ 
  annotate("text", x = min(ancombc_rand_table_mag$lfc_time_pointFMT1)+0.2, y = 10, 
           label = "Acclimation", hjust = 0, size = 4, fontface = "bold") +
  annotate("text", x = max(ancombc_rand_table_mag$lfc_time_pointFMT1)-0.2, y = 10, 
           label = "FMT1", hjust = 1, size = 4, fontface = "bold")+
  theme(plot.margin = margin(10, 10, 10, 10), clip = "off")

Phyla of the significant MAGs in FMT1

ancombc_rand_table_mag%>%
  filter(p_time_pointFMT1 < 0.05) %>%
  filter(lfc_time_pointFMT1>0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
            phylum sample_count
1     Bacteroidota            6
2      Bacillota_A            5
3        Bacillota            1
4 Desulfobacterota            1
5   Pseudomonadota            1

Phyla of the significant MAGs in acclimation

ancombc_rand_table_mag%>%
    filter(p_time_pointFMT1 < 0.05) %>%
  filter(lfc_time_pointFMT1<0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
             phylum sample_count
1       Bacillota_A            3
2         Bacillota            2
3      Bacteroidota            2
4   Cyanobacteriota            1
5 Verrucomicrobiota            1

15.5.3.3 WC: acclimation vs FMT1

Structural zeros

struc <- structural_zeros %>% 
  filter(present=="Acclimation")%>% 
  count(phylum, name = "Acclimation") %>%
  arrange(desc(Acclimation))
structural_zeros %>% 
  filter(present=="FMT1")%>% 
  count(phylum, name = "FMT1") %>%
  arrange(desc(FMT1)) %>% 
  full_join(., struc, by="phylum") %>%
  mutate(across(everything(), ~ ifelse(is.na(.), 0, .))) %>% 
  tt()
phylum FMT1 Acclimation
p__Bacillota_A 8 24
p__Bacillota 4 9
p__Bacteroidota 4 9
p__Bacillota_C 3 0
p__Pseudomonadota 2 7
p__Desulfobacterota 1 3
p__Cyanobacteriota 0 4
p__Verrucomicrobiota 0 2
p__Bacillota_B 0 1
phylo_samples <- sample_metadata %>%
  filter(type == "Warm_control" & time_point %in% c("Acclimation", "FMT1") )%>% 
  column_to_rownames("Tube_code") %>% 
  sample_data()
phylo_genome <- genome_counts_filt %>% 
  filter(!genome %in% structural_zeros$genome) %>% 
  select(one_of(c("genome",rownames(phylo_samples)))) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
  column_to_rownames("genome") %>% 
  otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>% 
  filter(genome %in% rownames(phylo_genome)) %>% 
  column_to_rownames("genome") %>% 
  dplyr::select(domain,phylum,class,order,family,genus,species) %>% 
  as.matrix() %>% 
  tax_table()

physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)
ancom_rand_output_wc_accli_fmt1 = ancombc2(data = physeq_genome_filtered, 
                  assay_name = "counts", 
                  tax_level = NULL,
                  fix_formula = "time_point",
                  p_adj_method = "holm", 
                  pseudo_sens = TRUE,
                  prv_cut =0, 
                  lib_cut = 0, 
                  s0_perc = 0.05,
                  group = NULL, 
                  struc_zero = FALSE, 
                  neg_lb = FALSE,
                  alpha = 0.05, 
                  n_cl = 2, 
                  verbose = TRUE,
                  global = FALSE, 
                  pairwise = FALSE, 
                  dunnet = FALSE, 
                  trend = FALSE,
                  iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
                  em_control = list(tol = 1e-5, max_iter = 100),
                  mdfdr_control = list(fwer_ctrl_method = "holm", B = 100), 
                  trend_control = NULL)
save(ancom_rand_output_wc_accli_fmt1, file="data/ancom_rand_output_wc_accli_fmt1.RData")
load("data/ancom_rand_output_wc_accli_fmt1.RData")
ancom_rand_output_wc_accli_fmt1$res %>%
  dplyr::select(taxon, lfc_time_pointFMT1, p_time_pointFMT1) %>%
  filter(p_time_pointFMT1 < 0.05) %>% 
  left_join(., genome_metadata, by=join_by("taxon"=="genome")) %>% 
  select(2,3,7,8,9) %>% 
  tt()  
lfc_time_pointFMT1 p_time_pointFMT1 order family genus
-1.4147020 0.0079624151 o__Gastranaerophilales f__Gastranaerophilaceae g__Limenecus
-1.6335512 0.0015915022 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
2.2048197 0.0027319824 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
-0.9719098 0.0338244363 o__Lachnospirales f__Lachnospiraceae g__Hungatella_A
1.9160385 0.0008275244 o__Fusobacteriales f__Fusobacteriaceae g__Fusobacterium_A
1.7589146 0.0289403764 o__Campylobacterales f__Helicobacteraceae g__Helicobacter_J
-1.2336775 0.0177056512 o__Lachnospirales f__Lachnospiraceae g__Hungatella_A
-0.9224891 0.0194457088 o__Bacteroidales f__Marinifilaceae g__Odoribacter
-1.2168819 0.0048334173 o__Lachnospirales f__Lachnospiraceae g__Enterocloster
-1.3990257 0.0176505048 o__Lachnospirales f__Lachnospiraceae g__Roseburia
1.0227752 0.0208942361 o__Lachnospirales f__Lachnospiraceae g__
-1.3990617 0.0292190491 o__Lachnospirales f__Lachnospiraceae g__Kineothrix
-1.6368805 0.0033069688 o__Desulfovibrionales f__Desulfovibrionaceae g__Desulfovibrio
-1.7932455 0.0038411118 o__Lachnospirales f__Lachnospiraceae g__JAAYNV01
1.0028863 0.0399559198 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
-2.7248646 0.0143167820 o__Bacteroidales f__Marinifilaceae g__Odoribacter
-1.2349255 0.0118533968 o__UBA3830 f__UBA3830 g__
-2.5444915 0.0181963898 o__RF39 f__UBA660 g__Faecisoma
-0.8132650 0.0410727153 o__Oscillospirales f__Oscillospiraceae g__Intestinimonas
-1.6887136 0.0052260245 o__Campylobacterales f__Helicobacteraceae g__NHYM01
0.8742795 0.0304885224 o__Lachnospirales f__Lachnospiraceae g__
-1.6911528 0.0075333214 o__Oscillospirales f__Ruminococcaceae g__Ruthenibacterium
-1.2248435 0.0031293651 o__Christensenellales f__MGBC116941 g__MGBC116941
-1.3822835 0.0145873552 o__Bacteroidales f__Rikenellaceae g__Alistipes
-1.0354069 0.0354665938 o__Christensenellales f__ g__
-1.2478241 0.0049555216 o__Bacteroidales f__Marinifilaceae g__Odoribacter
1.9196797 0.0073599170 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
-0.9705541 0.0400355874 o__Christensenellales f__DTU072 g__
0.9974229 0.0322636387 o__UBA3830 f__ g__
-0.8119953 0.0245159238 o__Bacteroidales f__Marinifilaceae g__Odoribacter
1.7039486 0.0022695466 o__Erysipelotrichales f__Erysipelotrichaceae g__Breznakia
0.9438507 0.0481624226 o__Oscillospirales f__Ruminococcaceae g__Anaerotruncus
1.3967021 0.0228792426 o__Erysipelotrichales f__Erysipelotrichaceae g__Clostridium_AQ
1.6782542 0.0001554928 o__Lachnospirales f__Lachnospiraceae g__
0.8341143 0.0297704979 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
-2.2451028 0.0207309381 o__Bacteroidales f__Rikenellaceae g__Alistipes
-1.0173105 0.0409645084 o__Bacteroidales f__Rikenellaceae g__Rikenella
1.4037398 0.0434404072 o__Christensenellales f__UBA3700 g__
-2.1061921 0.0255031097 o__Oscillospirales f__Ruminococcaceae g__Angelakisella
-2.8140777 0.0023998639 o__Mycoplasmatales f__Mycoplasmoidaceae g__Mycoplasmoides
-1.0993689 0.0246772376 o__Lachnospirales f__Lachnospiraceae g__
1.3411358 0.0251547320 o__RF32 f__CAG-239 g__CAJLXD01
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
  rownames_to_column(., "taxon") %>%
  mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))

ancombc_rand_table_mag <- ancom_rand_output_wc_accli_fmt1$res %>%
  dplyr::select(taxon, lfc_time_pointFMT1, p_time_pointFMT1) %>%
  #filter(p_time_pointFMT1 < 0.05) %>%
  dplyr::arrange(p_time_pointFMT1) %>%
  merge(., taxonomy, by="taxon") %>%
  mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
  dplyr::arrange(lfc_time_pointFMT1)

ancombc_rand_table_mag
                    taxon lfc_time_pointFMT1 p_time_pointFMT1      domain           phylum                  class               order               family
1    AH1_2nd_2:bin_000018       -3.172045116      1.000000000 d__Bacteria  Elusimicrobiota       c__Elusimicrobia    Elusimicrobiales    Elusimicrobiaceae
2    LI1_2nd_8:bin_000045       -2.814077676      0.002399864 d__Bacteria        Bacillota             c__Bacilli     Mycoplasmatales    Mycoplasmoidaceae
3    AH1_2nd_6:bin_000002       -2.724864564      0.014316782 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Marinifilaceae
4    AH1_2nd_6:bin_000035       -2.544491492      0.018196390 d__Bacteria        Bacillota             c__Bacilli                RF39               UBA660
5   AH1_2nd_20:bin_000053       -2.459596342      0.068593011 d__Bacteria      Bacillota_A          c__Clostridia  Christensenellales              UBA1242
6    LI1_2nd_8:bin_000006       -2.245102794      0.020730938 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales        Rikenellaceae
7    LI1_2nd_8:bin_000044       -2.106192139      0.025503110 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales      Ruminococcaceae
8    LI1_2nd_7:bin_000038       -1.914362784      1.000000000 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
9    AH1_2nd_2:bin_000003       -1.793245548      0.003841112 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
10  AH1_2nd_14:bin_000063       -1.725388252      0.107550596 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
11   LI1_2nd_2:bin_000002       -1.691152830      0.007533321 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales      Ruminococcaceae
12   AH1_2nd_7:bin_000028       -1.688713582      0.005226025 d__Bacteria Campylobacterota     c__Campylobacteria   Campylobacterales    Helicobacteraceae
13  AH1_2nd_20:bin_000027       -1.636880512      0.003306969 d__Bacteria Desulfobacterota    c__Desulfovibrionia  Desulfovibrionales  Desulfovibrionaceae
14  AH1_2nd_10:bin_000069       -1.633551159      0.001591502 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
15   LI1_2nd_4:bin_000037       -1.541769495      1.000000000 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales     Coprobacillaceae
16   LI1_2nd_8:bin_000079       -1.454775239      0.131542667 d__Bacteria   Pseudomonadota c__Gammaproteobacteria    Enterobacterales   Enterobacteriaceae
17  AH1_2nd_10:bin_000001       -1.414701964      0.007962415 d__Bacteria  Cyanobacteriota    c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
18  AH1_2nd_20:bin_000009       -1.399061741      0.029219049 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
19  AH1_2nd_19:bin_000005       -1.399025732      0.017650505 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
20   LI1_2nd_3:bin_000003       -1.382283470      0.014587355 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales        Rikenellaceae
21   LI1_2nd_4:bin_000026       -1.247824146      0.004955522 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Marinifilaceae
22   AH1_2nd_6:bin_000030       -1.234925474      0.011853397 d__Bacteria   Pseudomonadota c__Alphaproteobacteria             UBA3830              UBA3830
23  AH1_2nd_14:bin_000003       -1.233677453      0.017705651 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
24   LI1_2nd_2:bin_000006       -1.224843510      0.003129365 d__Bacteria      Bacillota_A          c__Clostridia  Christensenellales           MGBC116941
25  AH1_2nd_16:bin_000058       -1.216881887      0.004833417 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
26  AH1_2nd_19:bin_000072       -1.176594825      1.000000000 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
27  AH1_2nd_18:bin_000040       -1.172511335      0.141345717 d__Bacteria   Actinomycetota      c__Coriobacteriia    Coriobacteriales      Eggerthellaceae
28  AH1_2nd_13:bin_000055       -1.161670869      0.051969566 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
29   LI1_2nd_8:bin_000048       -1.099368907      0.024677238 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
30   LI1_2nd_4:bin_000001       -1.035406921      0.035466594 d__Bacteria      Bacillota_A          c__Clostridia  Christensenellales                     
31   LI1_2nd_8:bin_000016       -1.017310476      0.040964508 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales        Rikenellaceae
32   LI1_2nd_1:bin_000032       -0.999484854      1.000000000 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
33  AH1_2nd_11:bin_000004       -0.971909767      0.033824436 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
34   LI1_2nd_5:bin_000013       -0.970554096      0.040035587 d__Bacteria      Bacillota_A          c__Clostridia  Christensenellales               DTU072
35  AH1_2nd_12:bin_000015       -0.955081047      0.091947738 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales     Coprobacillaceae
36   AH1_2nd_5:bin_000023       -0.935340094      0.068420241 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
37  AH1_2nd_16:bin_000047       -0.922489055      0.019445709 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Marinifilaceae
38  AH1_2nd_10:bin_000050       -0.915250029      0.062275338 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
39  AH1_2nd_20:bin_000024       -0.904223789      0.085727985 d__Bacteria   Pseudomonadota c__Alphaproteobacteria                RF32              CAG-239
40   AH1_2nd_5:bin_000006       -0.835384441      0.054735417 d__Bacteria      Bacillota_C       c__Negativicutes   Acidaminococcales   Acidaminococcaceae
41   LI1_2nd_6:bin_000001       -0.819288155      0.089380355 d__Bacteria   Pseudomonadota c__Gammaproteobacteria    Enterobacterales   Enterobacteriaceae
42   AH1_2nd_6:bin_000060       -0.813265018      0.041072715 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales     Oscillospiraceae
43   LI1_2nd_5:bin_000037       -0.811995277      0.024515924 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Marinifilaceae
44   LI1_2nd_3:bin_000007       -0.761559060      0.108710846 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales  Erysipelotrichaceae
45  AH1_2nd_20:bin_000008       -0.755064594      0.146762306 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales        Rikenellaceae
46   AH1_2nd_6:bin_000037       -0.732607033      0.228979980 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales               UBA932
47   LI1_2nd_7:bin_000001       -0.724383692      0.276128779 d__Bacteria      Bacillota_A          c__Clostridia       Clostridiales       Clostridiaceae
48   AH1_2nd_5:bin_000051       -0.720742397      0.096650644 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
49  AH1_2nd_19:bin_000011       -0.709572225      1.000000000 d__Bacteria Desulfobacterota    c__Desulfovibrionia  Desulfovibrionales  Desulfovibrionaceae
50   LI1_2nd_1:bin_000014       -0.692650571      0.067035686 d__Bacteria Desulfobacterota    c__Desulfovibrionia  Desulfovibrionales  Desulfovibrionaceae
51   LI1_2nd_7:bin_000011       -0.673555412      0.134871483 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
52   AH1_2nd_1:bin_000039       -0.667198867      0.068006903 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Marinifilaceae
53  AH1_2nd_20:bin_000003       -0.657783594      0.245501871 d__Bacteria  Cyanobacteriota    c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
54   LI1_2nd_7:bin_000020       -0.622484932      1.000000000 d__Bacteria      Bacillota_B         c__Peptococcia       Peptococcales       Peptococcaceae
55  AH1_2nd_16:bin_000045       -0.584130247      0.099413448 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales        Rikenellaceae
56   LI1_2nd_4:bin_000010       -0.572438357      0.167231453 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
57  AH1_2nd_18:bin_000024       -0.570930451      0.145805402 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Marinifilaceae
58  AH1_2nd_13:bin_000025       -0.511260207      0.289820095 d__Bacteria      Bacillota_A          c__Clostridia  Christensenellales              UBA3700
59   AH1_2nd_2:bin_000017       -0.498405648      0.145828685 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
60  AH1_2nd_13:bin_000037       -0.491429021      0.159057604 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Marinifilaceae
61  AH1_2nd_19:bin_000001       -0.460649227      0.331234642 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
62   AH1_2nd_6:bin_000004       -0.456682329      0.280801383 d__Bacteria  Cyanobacteriota    c__Vampirovibrionia Gastranaerophilales             RUG14156
63  AH1_2nd_15:bin_000001       -0.453142587      0.350803862 d__Bacteria   Pseudomonadota c__Alphaproteobacteria         Rhizobiales         Rhizobiaceae
64   LI1_2nd_9:bin_000022       -0.435710568      0.175258804 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales     Oscillospiraceae
65   AH1_2nd_5:bin_000004       -0.426700893      0.259155948 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales   Acutalibacteraceae
66   AH1_2nd_9:bin_000002       -0.422458230      0.413092317 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
67  AH1_2nd_10:bin_000049       -0.410039582      0.324826918 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
68   AH1_2nd_1:bin_000003       -0.368752504      0.337753915 d__Bacteria  Cyanobacteriota    c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
69  AH1_2nd_14:bin_000052       -0.327862400      0.284734829 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
70   LI1_2nd_7:bin_000005       -0.323963344      0.495004900 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
71   LI1_2nd_3:bin_000005       -0.295164346      0.418500690 d__Bacteria Desulfobacterota    c__Desulfovibrionia  Desulfovibrionales  Desulfovibrionaceae
72  AH1_2nd_12:bin_000008       -0.226626091      0.640611934 d__Bacteria        Bacillota             c__Bacilli     Lactobacillales     Streptococcaceae
73   AH1_2nd_6:bin_000062       -0.206368360      0.539866673 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Muribaculaceae
74   LI1_2nd_9:bin_000023       -0.203347377      0.595223736 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
75   AH1_2nd_7:bin_000006       -0.202673177      0.554293566 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
76   LI1_2nd_7:bin_000012       -0.189556770      0.661546421 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales        Rikenellaceae
77  AH1_2nd_16:bin_000064       -0.187790084      0.572888455 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales     Oscillospiraceae
78  AH1_2nd_16:bin_000096       -0.178702383      0.583373192 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales      Ruminococcaceae
79  LI1_2nd_10:bin_000017       -0.173184347      0.737001280 d__Bacteria      Chlamydiota          c__Chlamydiia        Chlamydiales        Chlamydiaceae
80   LI1_2nd_3:bin_000015       -0.170797925      0.612784815 d__Bacteria        Bacillota             c__Bacilli    Staphylococcales    Staphylococcaceae
81   LI1_2nd_7:bin_000014       -0.168665378      0.625493363 d__Bacteria     Bacteroidota         c__Bacteroidia    Flavobacteriales              UBA1820
82   LI1_2nd_4:bin_000041       -0.132252238      1.000000000 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
83   LI1_2nd_8:bin_000038       -0.127036874      0.666220738 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
84   AH1_2nd_6:bin_000046       -0.124514289      0.800916165 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
85  AH1_2nd_18:bin_000011       -0.121480606      0.781438815 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales     Coprobacillaceae
86   AH1_2nd_8:bin_000006       -0.085757870      0.837188584 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
87   LI1_2nd_2:bin_000001       -0.081488093      0.806381661 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales      Ruminococcaceae
88  AH1_2nd_16:bin_000033       -0.070311676      0.836601382 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales                     
89  AH1_2nd_16:bin_000020       -0.063469833      0.872865235 d__Bacteria Desulfobacterota    c__Desulfovibrionia  Desulfovibrionales  Desulfovibrionaceae
90   LI1_2nd_4:bin_000036       -0.056912524      0.887544342 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
91  AH1_2nd_10:bin_000010       -0.055775151      1.000000000 d__Bacteria  Cyanobacteriota    c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
92  AH1_2nd_16:bin_000019       -0.031730347      0.952633776 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales        Rikenellaceae
93  AH1_2nd_14:bin_000014       -0.023373863      0.941623659 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales     Oscillospiraceae
94   LI1_2nd_9:bin_000004       -0.009434782      0.977099556 d__Bacteria  Cyanobacteriota    c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
95   AH1_2nd_7:bin_000011       -0.009352205      0.980499154 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
96  AH1_2nd_13:bin_000011       -0.004237580      0.991877404 d__Bacteria   Pseudomonadota c__Alphaproteobacteria                RF32              CAG-239
97   AH1_2nd_1:bin_000005        0.012737951      0.971508554 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
98   LI1_2nd_4:bin_000052        0.044044504      0.897882451 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
99  AH1_2nd_19:bin_000055        0.051824866      0.896680010 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
100  LI1_2nd_7:bin_000042        0.053144641      0.881172225 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
                    genus                           species
1                 UBA1436                                  
2          Mycoplasmoides                                  
3             Odoribacter                                  
4               Faecisoma                                  
5                                                          
6               Alistipes                                  
7           Angelakisella                                  
8       Parabacteroides_B                                  
9                JAAYNV01                                  
10              Blautia_A                                  
11       Ruthenibacterium                                  
12                 NHYM01                                  
13          Desulfovibrio                                  
14            Bacteroides                                  
15           Stoquefichus                                  
16          Citrobacter_A        Citrobacter_A amalonaticus
17              Limenecus                                  
18             Kineothrix                                  
19              Roseburia                                  
20              Alistipes                                  
21            Odoribacter                                  
22                                                         
23           Hungatella_A                                  
24             MGBC116941                                  
25          Enterocloster                                  
26                                                         
27            Eggerthella                                  
28            Bacteroides            Bacteroides fragilis_B
29                                                         
30                                                         
31              Rikenella                                  
32        Parabacteroides                                  
33           Hungatella_A                                  
34                                                         
35         Thomasclavelia                                  
36                Blautia                                  
37            Odoribacter                                  
38            Bacteroides          Bacteroides intestinalis
39                 CAZU01                                  
40  Phascolarctobacterium Phascolarctobacterium sp900544795
41             Salmonella               Salmonella enterica
42         Intestinimonas                                  
43            Odoribacter                                  
44                   C-19                                  
45              Alistipes                                  
46            Egerieousia                                  
47                Sarcina                                  
48            Bacteroides                                  
49              Mailhella                                  
50                                                         
51                   14-2                                  
52            Odoribacter                                  
53             Scatenecus                                  
54                                                         
55              Alistipes                                  
56        Parabacteroides                                  
57            Odoribacter                                  
58                                                         
59             Copromonas                                  
60            Odoribacter                                  
61        Parabacteroides                                  
62                                                         
63          Agrobacterium       Agrobacterium tumefaciens_H
64          Oscillibacter                                  
65                                                         
66            Phocaeicola                                  
67        Parabacteroides                                  
68              Scatousia                                  
69            Bacteroides                                  
70            Ventrimonas                                  
71               Lawsonia                                  
72            Lactococcus           Lactococcus formosensis
73               HGM05232                                  
74               JALFVM01                                  
75               JALFVM01                                  
76              Alistipes                                  
77            Scatomorpha                                  
78       Ruthenibacterium                                  
79                                                         
80         Staphylococcus             Staphylococcus shinii
81            Merdimorpha                                  
82          Clostridium_Q                                  
83          Clostridium_Q                                  
84            Bacteroides                                  
85          Coprobacillus                                  
86                 CAG-95                                  
87                                                         
88                                                         
89              Bilophila                                  
90                                                         
91               CALURL01                                  
92              Alistipes                                  
93        Marseille-P3106                                  
94              Scatousia                                  
95           Lacrimispora                                  
96             MGBC133411                                  
97                                                         
98          Enterocloster                                  
99        Parabacteroides                                  
100     Parabacteroides_B                                  
 [ reached 'max' / getOption("max.print") -- omitted 60 rows ]
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
  mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", ""))  %>%
  right_join(taxonomy, by=join_by(phylum == phylum)) %>%
  dplyr::select(phylum, colors) %>%
  mutate(colors = str_c(colors, "80"))  %>% #add 80% alpha
    unique() %>%
    dplyr::arrange(phylum)

tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
  
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
    dplyr::arrange(phylum) %>%
    dplyr::select(colors) %>%
    pull()
ancombc_rand_table_mag %>%
  mutate(
    genome = factor(taxon, levels = ancombc_rand_table_mag$taxon),
    significance = ifelse(p_time_pointFMT1 < 0.05, phylum, NA)  # Set non-significant to NA (not mapped in legend)
  ) %>%
  ggplot() +
  # Plot significant points with legend
  geom_point(aes(x = lfc_time_pointFMT1, y = -log10(p_time_pointFMT1), color = significance), 
             size = 3, alpha = 0.7, na.rm = TRUE) +  
  # Plot non-significant points separately without legend
  geom_point(data = filter(ancombc_rand_table_mag, p_time_pointFMT1 >= 0.05),
             aes(x = lfc_time_pointFMT1, y = -log10(p_time_pointFMT1)), 
             color = "grey70", size = 3, alpha = 0.7, show.legend = FALSE) +
  scale_color_manual(
    values = tax_color,  # Only keeps phylum colors in legend
    na.translate = FALSE  # Removes NA (non-significant) from legend
  ) + 
  geom_hline(yintercept = -log10(0.05), linetype = "dashed") +  
  geom_vline(xintercept = 0, linetype = "dashed") +
  scale_y_continuous(limits = c(0, 5)) +  
  xlab("log2FoldChange") + 
  ylab("-log10(p-value)") +
  guides(color = guide_legend(title = "Phylum")) +  
  theme_minimal()+ 
  annotate("text", x = min(ancombc_rand_table_mag$lfc_time_pointFMT1), y = 5, 
           label = "FMT1", hjust = 0, size = 4, fontface = "bold") +
  annotate("text", x = max(ancombc_rand_table_mag$lfc_time_pointFMT1), y = 5, 
           label = "Acclimation", hjust = 1, size = 4, fontface = "bold")

Phyla of the significant MAGs in FMT1

ancombc_rand_table_mag%>%
  filter(p_time_pointFMT1 < 0.05) %>%
  filter(lfc_time_pointFMT1>0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
            phylum sample_count
1      Bacillota_A            5
2     Bacteroidota            4
3        Bacillota            2
4   Pseudomonadota            2
5 Campylobacterota            1
6   Fusobacteriota            1

Phyla of the significant MAGs in acclimation

ancombc_rand_table_mag%>%
  filter(p_time_pointFMT1 < 0.05) %>%
  filter(lfc_time_pointFMT1<0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
            phylum sample_count
1      Bacillota_A           13
2     Bacteroidota            8
3        Bacillota            2
4 Campylobacterota            1
5  Cyanobacteriota            1
6 Desulfobacterota            1
7   Pseudomonadota            1

15.6 Differences between FMT1 and FMT2 across the three experimental groups

15.6.1 Functional differences

CI from FMT1 to FMT2

significant_element<-element_gift %>%
  filter(time_point %in% c("FMT2","FMT1") & type == "Cold_intervention") %>%
  select(-time_point, -type) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(Tube_code, where( ~ is.numeric(.) && sum(.) > 0)) %>%
  left_join(sample_metadata[c(1, 8)], by = "Tube_code") %>% 
  pivot_longer(-c(Tube_code, time_point),
               names_to = "trait",
               values_to = "value") %>%
  group_by(trait) %>%
  summarise(p_value = wilcox.test(value ~ time_point)$p.value) %>%
  mutate(p_adjust = p.adjust(p_value, method = "BH")) %>%
  filter(p_adjust < 0.05) %>%
  remove_rownames() %>% 
  left_join(., uniqueGIFT_db, by=join_by("trait"=="Code_element"))
element_gift_sig <- element_gift %>%
  select(Tube_code, all_of(intersect(
    significant_element$trait,
    colnames(element_gift)
  ))) %>%
  left_join(., sample_metadata[c(1, 6, 8)], by = join_by(Tube_code == Tube_code)) %>%
  filter(time_point %in% c("FMT2","FMT1"))%>%
  filter(type=="Cold_intervention")
  
difference_table <- element_gift_sig %>%
  select(-Tube_code, -type) %>%
  group_by(time_point) %>%
  summarise(across(everything(), mean)) %>%
  t() %>%
  row_to_names(row_number = 1) %>%
  as.data.frame() %>%
  mutate_if(is.character, as.numeric) %>%
  rownames_to_column(., "Elements") %>%
  left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>% 
  arrange(Function) %>% 
  mutate(Difference=FMT1-FMT2)%>% 
  mutate(group_color = ifelse(Difference <0,"FMT2", "FMT1")) 
difference_table %>%
  ggplot(aes(x=forcats::fct_reorder(Function,Difference), y=Difference, fill=group_color)) + 
  geom_col() +
  scale_fill_manual(values=c('#008080',"#76b183")) + 
  geom_hline(yintercept=0) + 
  coord_flip()+
  theme(axis.text = element_text(size = 10),
        axis.title = element_text(size = 12),
        legend.position = "right", 
        legend.title = element_blank(),
        panel.background = element_blank(),
        panel.grid.major = element_line(size = 0.15, linetype = 'solid',
                                        colour = "grey"))+
  xlab("Function") + 
  ylab("Mean difference")

CC from FMT1 to FMT2

element_gift %>%
  filter(time_point %in% c("FMT2","FMT1") & type == "Cold_control") %>%
  select(-time_point, -type) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(Tube_code, where( ~ is.numeric(.) && sum(.) > 0)) %>%
  left_join(sample_metadata[c(1, 8)], by = "Tube_code") %>% 
  pivot_longer(-c(Tube_code, time_point),
               names_to = "trait",
               values_to = "value") %>%
  group_by(trait) %>%
  summarise(p_value = wilcox.test(value ~ time_point)$p.value) %>%
  mutate(p_adjust = p.adjust(p_value, method = "BH")) %>%
  filter(p_adjust < 0.05) %>%
  remove_rownames() %>% 
  left_join(., uniqueGIFT_db, by=join_by("trait"=="Code_element"))
# A tibble: 0 × 6
# ℹ 6 variables: trait <chr>, p_value <dbl>, p_adjust <dbl>, Domain <chr>, Function <chr>, Element <chr>

WC from FMT1 to FMT2

element_gift %>%
  filter(time_point %in% c("FMT2","FMT1") & type == "Warm_control") %>%
  select(-time_point, -type) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(Tube_code, where( ~ is.numeric(.) && sum(.) > 0)) %>%
  left_join(sample_metadata[c(1, 8)], by = "Tube_code") %>% 
  pivot_longer(-c(Tube_code, time_point),
               names_to = "trait",
               values_to = "value") %>%
  group_by(trait) %>%
  summarise(p_value = wilcox.test(value ~ time_point)$p.value) %>%
  mutate(p_adjust = p.adjust(p_value, method = "BH")) %>%
  filter(p_adjust < 0.05) %>%
  remove_rownames() %>% 
  left_join(., uniqueGIFT_db, by=join_by("trait"=="Code_element"))
# A tibble: 0 × 6
# ℹ 6 variables: trait <chr>, p_value <dbl>, p_adjust <dbl>, Domain <chr>, Function <chr>, Element <chr>

15.6.2 Differential abundances

15.6.2.1 CI: FMT1 vs FMT2

Structural zeros

struc <- structural_zeros %>% 
  filter(present=="FMT1")%>% 
  count(phylum, name = "FMT1") %>%
  arrange(desc(FMT1))
structural_zeros %>% 
  filter(present=="FMT2")%>% 
  count(phylum, name = "FMT2") %>%
  arrange(desc(FMT2)) %>% 
  full_join(., struc, by="phylum") %>%
  mutate(across(everything(), ~ ifelse(is.na(.), 0, .))) %>% 
  tt()
phylum FMT2 FMT1
p__Bacillota_A 19 8
p__Pseudomonadota 15 0
p__Bacteroidota 8 2
p__Bacillota 5 3
p__Cyanobacteriota 5 0
p__Desulfobacterota 2 0
p__Verrucomicrobiota 2 0
p__Bacillota_C 1 0
p__Spirochaetota 1 0
p__Actinomycetota 0 1
p__Campylobacterota 0 1
phylo_samples <- sample_metadata %>%
  filter(type == "Cold_intervention" & time_point %in% c("FMT1", "FMT2") )%>% 
  column_to_rownames("Tube_code") %>% 
  sample_data()
phylo_genome <- genome_counts_filt %>% 
  filter(!genome %in% structural_zeros$genome) %>% 
  select(one_of(c("genome",rownames(phylo_samples)))) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
  column_to_rownames("genome") %>% 
  otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>% 
  filter(genome %in% rownames(phylo_genome)) %>% 
  column_to_rownames("genome") %>% 
  dplyr::select(domain,phylum,class,order,family,genus,species) %>% 
  as.matrix() %>% 
  tax_table()

physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)
ancom_rand_output_ci_fmt1_FMT2 = ancombc2(data = physeq_genome_filtered, 
                  assay_name = "counts", 
                  tax_level = NULL,
                  fix_formula = "time_point", 
                  p_adj_method = "holm", 
                  pseudo_sens = TRUE,
                  prv_cut =0, 
                  lib_cut = 0, 
                  s0_perc = 0.05,
                  group = NULL, 
                  struc_zero = FALSE, 
                  neg_lb = FALSE,
                  alpha = 0.05, 
                  n_cl = 2, 
                  verbose = TRUE,
                  global = FALSE, 
                  pairwise = FALSE, 
                  dunnet = FALSE, 
                  trend = FALSE,
                  iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
                  em_control = list(tol = 1e-5, max_iter = 100),
                  mdfdr_control = list(fwer_ctrl_method = "holm", B = 100), 
                  trend_control = NULL)
save(ancom_rand_output_ci_fmt1_FMT2, file="data/ancom_rand_output_ci_fmt1_FMT2.RData")
load("data/ancom_rand_output_ci_fmt1_FMT2.RData")
ancom_rand_output_ci_fmt1_FMT2$res %>%
  dplyr::select(taxon, lfc_time_pointFMT2, p_time_pointFMT2) %>%
  filter(p_time_pointFMT2 < 0.05) %>% 
  left_join(., genome_metadata, by=join_by("taxon"=="genome")) %>% 
  select(2,3,7,8,9) %>% 
  tt()  
lfc_time_pointFMT2 p_time_pointFMT2 order family genus
1.6049257 0.0157811882 o__Gastranaerophilales f__Gastranaerophilaceae g__Limenecus
0.9564973 0.0275097118 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
2.0492182 0.0166204047 o__Lachnospirales f__Lachnospiraceae g__Hungatella_A
-1.8918089 0.0096699935 o__Campylobacterales f__Helicobacteraceae g__Helicobacter_J
-1.2081046 0.0210589048 o__RF32 f__CAG-239 g__MGBC133411
1.1513092 0.0219338311 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
1.9022385 0.0009678399 o__Lachnospirales f__Lachnospiraceae g__Hungatella_A
-1.1428833 0.0226212070 o__Rhizobiales f__Rhizobiaceae g__Agrobacterium
1.5906273 0.0008227119 o__Lachnospirales f__Lachnospiraceae g__Acetatifactor
1.0975241 0.0150004143 o__Oscillospirales f__Oscillospiraceae g__Scatomorpha
-1.0241243 0.0081256219 o__Lachnospirales f__Lachnospiraceae g__
1.1899452 0.0392264071 o__Bacteroidales f__Marinifilaceae g__Odoribacter
2.3003361 0.0160580792 o__Bacteroidales f__Rikenellaceae g__Alistipes
-1.1771426 0.0398005710 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
2.1549960 0.0063980104 o__Enterobacterales f__Enterobacteriaceae g__Proteus
1.1806298 0.0153184268 o__Lachnospirales f__Lachnospiraceae g__CAG-95
0.9643163 0.0213552181 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
0.9715614 0.0148063607 o__Desulfovibrionales f__Desulfovibrionaceae g__
1.4550694 0.0288178508 o__Christensenellales f__ g__
1.6826956 0.0003988881 o__Bacteroidales f__Marinifilaceae g__Odoribacter
-1.7750819 0.0188386547 o__Bacteroidales f__Rikenellaceae g__Alistipes
-1.0206597 0.0387357866 o__Erysipelotrichales f__Erysipelotrichaceae g__Clostridium_AQ
1.6686679 0.0064021560 o__Lachnospirales f__Lachnospiraceae g__
1.2527316 0.0339066243 o__RF32 f__CAG-239 g__CAJLXD01
1.1133229 0.0229428413 o__Oscillospirales f__Oscillospiraceae g__Oscillibacter
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
  rownames_to_column(., "taxon") %>%
  mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))

ancombc_rand_table_mag <- ancom_rand_output_ci_fmt1_FMT2$res %>%
  dplyr::select(taxon, lfc_time_pointFMT2, p_time_pointFMT2) %>%
  #filter(p_time_pointFMT2 < 0.05) %>%
  dplyr::arrange(p_time_pointFMT2) %>%
  merge(., taxonomy, by="taxon") %>%
  mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
  dplyr::arrange(lfc_time_pointFMT2)

ancombc_rand_table_mag
                    taxon lfc_time_pointFMT2 p_time_pointFMT2      domain           phylum                  class                order               family
1    AH1_2nd_2:bin_000018      -2.2170594742      1.000000000 d__Bacteria  Elusimicrobiota       c__Elusimicrobia     Elusimicrobiales    Elusimicrobiaceae
2   AH1_2nd_12:bin_000012      -1.8918089486      0.009669994 d__Bacteria Campylobacterota     c__Campylobacteria    Campylobacterales    Helicobacteraceae
3    LI1_2nd_7:bin_000012      -1.7750818527      0.018838655 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
4    AH1_2nd_1:bin_000034      -1.6789181641      0.122732878 d__Bacteria        Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
5    AH1_2nd_2:bin_000017      -1.6426716672      0.099339303 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
6   AH1_2nd_12:bin_000007      -1.3317033397      0.149416164 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
7   AH1_2nd_13:bin_000049      -1.2129524972      1.000000000 d__Bacteria      Bacillota_A          c__Clostridia   Christensenellales              UBA3700
8   AH1_2nd_13:bin_000011      -1.2081046232      0.021058905 d__Bacteria   Pseudomonadota c__Alphaproteobacteria                 RF32              CAG-239
9    AH1_2nd_6:bin_000046      -1.1771425763      0.039800571 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
10  AH1_2nd_15:bin_000001      -1.1428833217      0.022621207 d__Bacteria   Pseudomonadota c__Alphaproteobacteria          Rhizobiales         Rhizobiaceae
11   AH1_2nd_1:bin_000023      -1.0241243111      0.008125622 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
12   LI1_2nd_7:bin_000016      -1.0206596605      0.038735787 d__Bacteria        Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
13  AH1_2nd_16:bin_000020      -0.8225875827      0.125186644 d__Bacteria Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
14   LI1_2nd_4:bin_000036      -0.7526182595      0.126502538 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
15  AH1_2nd_16:bin_000033      -0.7360801119      0.259428240 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales                     
16  AH1_2nd_16:bin_000018      -0.7339918201      0.050556855 d__Bacteria      Bacillota_A          c__Clostridia   Christensenellales              UBA3700
17   LI1_2nd_2:bin_000006      -0.6585081134      0.243653520 d__Bacteria      Bacillota_A          c__Clostridia   Christensenellales           MGBC116941
18  AH1_2nd_12:bin_000008      -0.6374710665      0.240673513 d__Bacteria        Bacillota             c__Bacilli      Lactobacillales     Streptococcaceae
19  AH1_2nd_16:bin_000045      -0.6276291694      0.142544022 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
20   AH1_2nd_2:bin_000001      -0.6267640458      0.103108126 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
21  AH1_2nd_10:bin_000097      -0.6211566498      0.172843297 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
22   AH1_2nd_5:bin_000006      -0.5548028963      0.145909018 d__Bacteria      Bacillota_C       c__Negativicutes    Acidaminococcales   Acidaminococcaceae
23   LI1_2nd_8:bin_000079      -0.5544456136      0.224155294 d__Bacteria   Pseudomonadota c__Gammaproteobacteria     Enterobacterales   Enterobacteriaceae
24   AH1_2nd_5:bin_000073      -0.5285887503      0.294517962 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
25   AH1_2nd_9:bin_000047      -0.5283891687      0.106458201 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
26   LI1_2nd_9:bin_000023      -0.5086805550      0.166418019 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
27   LI1_2nd_8:bin_000070      -0.4860780469      0.356817031 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
28   LI1_2nd_7:bin_000014      -0.4683846051      0.314952831 d__Bacteria     Bacteroidota         c__Bacteroidia     Flavobacteriales              UBA1820
29  AH1_2nd_16:bin_000047      -0.4250924204      1.000000000 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Marinifilaceae
30  AH1_2nd_19:bin_000055      -0.4061328580      0.375240818 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
31   LI1_2nd_7:bin_000038      -0.3966760527      1.000000000 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
32   AH1_2nd_5:bin_000069      -0.3900113999      0.311651877 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
33  AH1_2nd_20:bin_000087      -0.3245503723      0.266844400 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
34   AH1_2nd_7:bin_000036      -0.3212194646      0.334517260 d__Bacteria      Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
35  AH1_2nd_17:bin_000020      -0.3187362674      0.426259034 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
36  AH1_2nd_10:bin_000042      -0.3101621313      1.000000000 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
37   LI1_2nd_8:bin_000064      -0.2610335487      0.646906988 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
38   AH1_2nd_7:bin_000070      -0.2418390019      0.493532581 d__Bacteria      Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
39   LI1_2nd_7:bin_000040      -0.2381398838      0.583059539 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
40   AH1_2nd_5:bin_000023      -0.2136644368      0.593548340 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
41   AH1_2nd_7:bin_000027      -0.1580093762      0.583321339 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
42   AH1_2nd_8:bin_000027      -0.1571181784      0.675378405 d__Bacteria        Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
43  AH1_2nd_15:bin_000004      -0.1536142596      0.696309495 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
44   AH1_2nd_8:bin_000007      -0.1519618005      0.586159140 d__Bacteria        Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
45  AH1_2nd_12:bin_000041      -0.1294680721      0.770312929 d__Bacteria        Bacillota             c__Bacilli      Mycoplasmatales    Mycoplasmoidaceae
46   AH1_2nd_7:bin_000041      -0.1273204855      0.690949178 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
47   LI1_2nd_4:bin_000034      -0.1191329411      0.736328870 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
48   LI1_2nd_7:bin_000083      -0.1172776467      0.698042931 d__Bacteria      Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
49   LI1_2nd_4:bin_000041      -0.1155769652      0.702040881 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
50   AH1_2nd_1:bin_000048      -0.1090370229      0.695407295 d__Bacteria      Bacillota_A          c__Clostridia Peptostreptococcales     Anaerovoracaceae
51  AH1_2nd_19:bin_000067      -0.0833563872      0.811024270 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
52  AH1_2nd_11:bin_000005      -0.0355163387      0.950101967 d__Bacteria   Fusobacteriota       c__Fusobacteriia      Fusobacteriales     Fusobacteriaceae
53   LI1_2nd_7:bin_000005      -0.0290230670      1.000000000 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
54   LI1_2nd_5:bin_000023      -0.0240260015      0.929045758 d__Bacteria   Pseudomonadota c__Alphaproteobacteria              UBA3830                     
55  AH1_2nd_16:bin_000058      -0.0169831700      0.954070906 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
56  AH1_2nd_18:bin_000033      -0.0100172749      0.969644351 d__Bacteria        Bacillota             c__Bacilli   Erysipelotrichales     Coprobacillaceae
57  AH1_2nd_15:bin_000013      -0.0001676338      0.999546372 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
58   LI1_2nd_8:bin_000016       0.0011274489      0.996771455 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
59  AH1_2nd_16:bin_000025       0.0366696878      0.901343037 d__Bacteria      Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
60  AH1_2nd_16:bin_000019       0.0369203759      0.924379339 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
61   AH1_2nd_7:bin_000011       0.0479829287      0.875765403 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
62  AH1_2nd_18:bin_000041       0.0540359288      1.000000000 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
63  AH1_2nd_15:bin_000025       0.0701556482      0.886016590 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
64   AH1_2nd_7:bin_000004       0.0707079201      0.893038927 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
65   LI1_2nd_7:bin_000009       0.0852743604      0.793414966 d__Bacteria      Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
66   LI1_2nd_7:bin_000053       0.0883838143      0.808848202 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
67  AH1_2nd_18:bin_000039       0.0902103359      0.751572995 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
68   AH1_2nd_7:bin_000055       0.0995979755      0.783239826 d__Bacteria        Bacillota             c__Bacilli      Mycoplasmatales    Mycoplasmoidaceae
69  AH1_2nd_20:bin_000042       0.1457144033      0.687130023 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
70  AH1_2nd_14:bin_000032       0.1595169534      0.607052260 d__Bacteria      Bacillota_C       c__Negativicutes      Selenomonadales   Massilibacillaceae
71  AH1_2nd_12:bin_000018       0.1715907676      0.539214431 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
72  AH1_2nd_14:bin_000052       0.1912431106      0.601899351 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
73  AH1_2nd_13:bin_000025       0.2216490457      0.511924719 d__Bacteria      Bacillota_A          c__Clostridia   Christensenellales              UBA3700
74   AH1_2nd_1:bin_000015       0.2218604276      0.613436340 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
75   LI1_2nd_5:bin_000037       0.2236604074      0.503097546 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Marinifilaceae
76  AH1_2nd_14:bin_000063       0.2304734408      0.488756679 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
77  AH1_2nd_15:bin_000043       0.2329461781      0.511602541 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
78   AH1_2nd_5:bin_000004       0.2382440770      0.468335048 d__Bacteria      Bacillota_A          c__Clostridia      Oscillospirales   Acutalibacteraceae
79   LI1_2nd_7:bin_000078       0.2932171346      0.427503334 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
80   LI1_2nd_8:bin_000006       0.3331257716      0.403780919 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
81  AH1_2nd_14:bin_000014       0.3373251738      0.270598916 d__Bacteria      Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
82  AH1_2nd_20:bin_000006       0.3542644595      0.293421593 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Marinifilaceae
83   LI1_2nd_7:bin_000019       0.3561942326      0.281023928 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Marinifilaceae
84  AH1_2nd_19:bin_000050       0.3635927444      0.421825348 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
85   AH1_2nd_1:bin_000003       0.3754831806      0.314191133 d__Bacteria  Cyanobacteriota    c__Vampirovibrionia  Gastranaerophilales Gastranaerophilaceae
86  AH1_2nd_11:bin_000028       0.4410427519      0.247717632 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
87   AH1_2nd_1:bin_000002       0.4518608620      0.177644673 d__Bacteria      Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
88   AH1_2nd_6:bin_000062       0.4580597522      0.307562548 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Muribaculaceae
89   LI1_2nd_4:bin_000052       0.4668906412      0.232901403 d__Bacteria      Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
90   LI1_2nd_7:bin_000033       0.4871293802      0.230751510 d__Bacteria      Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
91  AH1_2nd_16:bin_000023       0.4902761211      0.360578101 d__Bacteria      Bacillota_A          c__Clostridia   Christensenellales              UBA3700
92   AH1_2nd_6:bin_000037       0.4968732208      1.000000000 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales               UBA932
93   AH1_2nd_6:bin_000060       0.5058525488      0.123057616 d__Bacteria      Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
94   LI1_2nd_3:bin_000003       0.5061346276      0.172686829 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
95  AH1_2nd_16:bin_000096       0.5099151444      0.171129874 d__Bacteria      Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
96  AH1_2nd_16:bin_000100       0.5845175399      0.253252200 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
97  AH1_2nd_10:bin_000069       0.5995170465      0.172000007 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
98  AH1_2nd_20:bin_000016       0.6065298077      0.204139503 d__Bacteria        Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
99  AH1_2nd_18:bin_000024       0.7171502782      0.107781937 d__Bacteria     Bacteroidota         c__Bacteroidia        Bacteroidales       Marinifilaceae
100 AH1_2nd_20:bin_000027       0.7182052307      0.095720937 d__Bacteria Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
                    genus                           species
1                 UBA1436                                  
2          Helicobacter_J                                  
3               Alistipes                                  
4                  Dielma                                  
5              Copromonas                                  
6                                                          
7                                                          
8              MGBC133411                                  
9             Bacteroides                                  
10          Agrobacterium       Agrobacterium tumefaciens_H
11                                                         
12         Clostridium_AQ                                  
13              Bilophila                                  
14                                                         
15                                                         
16                                                         
17             MGBC116941                                  
18            Lactococcus           Lactococcus formosensis
19              Alistipes                                  
20                                                         
21        Parabacteroides                                  
22  Phascolarctobacterium Phascolarctobacterium sp900544795
23          Citrobacter_A        Citrobacter_A amalonaticus
24        Parabacteroides       Parabacteroides goldsteinii
25            Bacteroides                                  
26               JALFVM01                                  
27            Bacteroides                                  
28            Merdimorpha                                  
29            Odoribacter                                  
30        Parabacteroides                                  
31      Parabacteroides_B                                  
32            Bacteroides                                  
33        Parabacteroides          Parabacteroides gordonii
34         Intestinimonas                                  
35          Clostridium_Q                                  
36              Alistipes                                  
37        Parabacteroides                                  
38   Pseudoflavonifractor                                  
39                                                         
40                Blautia                                  
41             Copromonas                                  
42                 NSJ-61                                  
43               UMGS1251                                  
44                 Dielma                                  
45         Mycoplasmoides                                  
46                                                         
47            Bacteroides      Bacteroides thetaiotaomicron
48   Pseudoflavonifractor                                  
49          Clostridium_Q                                  
50                                                         
51            Bacteroides                Bacteroides ovatus
52        Fusobacterium_A          Fusobacterium_A ulcerans
53            Ventrimonas                                  
54                                                         
55          Enterocloster                                  
56                Beduini                                  
57            Ventrimonas                                  
58              Rikenella                                  
59       Negativibacillus                                  
60              Alistipes                                  
61           Lacrimispora                                  
62            Bacteroides                                  
63            Phocaeicola                                  
64         Eisenbergiella                                  
65          Anaerotruncus                                  
66            Bacteroides                Bacteroides nordii
67              Alistipes                                  
68             Ureaplasma                                  
69             Hungatella                                  
70                                                         
71              Alistipes                                  
72            Bacteroides                                  
73                                                         
74             MGBC136627                                  
75            Odoribacter                                  
76              Blautia_A                                  
77            Bacteroides                                  
78                                                         
79             Copromonas                                  
80              Alistipes                                  
81        Marseille-P3106                                  
82          Butyricimonas         Butyricimonas sp900184685
83          Butyricimonas                                  
84                                                         
85              Scatousia                                  
86            Bacteroides                                  
87           Fournierella                                  
88               HGM05232                                  
89          Enterocloster                                  
90           Fournierella                                  
91                                                         
92            Egerieousia                                  
93         Intestinimonas                                  
94              Alistipes                                  
95       Ruthenibacterium                                  
96            Bacteroides                                  
97            Bacteroides                                  
98                                                         
99            Odoribacter                                  
100         Desulfovibrio                                  
 [ reached 'max' / getOption("max.print") -- omitted 51 rows ]
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
  mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", ""))  %>%
  right_join(taxonomy, by=join_by(phylum == phylum)) %>%
  dplyr::select(phylum, colors) %>%
  mutate(colors = str_c(colors, "80"))  %>% #add 80% alpha
    unique() %>%
    dplyr::arrange(phylum)

tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
  
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
    dplyr::arrange(phylum) %>%
    dplyr::select(colors) %>%
    pull()
ancombc_rand_table_mag %>%
  mutate(
    genome = factor(taxon, levels = ancombc_rand_table_mag$taxon),
    significance = ifelse(p_time_pointFMT2 < 0.05, phylum, NA)  # Set non-significant to NA (not mapped in legend)
  ) %>%
  ggplot() +
  # Plot significant points with legend
  geom_point(aes(x = lfc_time_pointFMT2, y = -log10(p_time_pointFMT2), color = significance), 
             size = 3, alpha = 0.7, na.rm = TRUE) +  
  # Plot non-significant points separately without legend
  geom_point(data = filter(ancombc_rand_table_mag, p_time_pointFMT2 >= 0.05),
             aes(x = lfc_time_pointFMT2, y = -log10(p_time_pointFMT2)), 
             color = "grey70", size = 3, alpha = 0.7, show.legend = FALSE) +
  scale_color_manual(
    values = tax_color,  # Only keeps phylum colors in legend
    na.translate = FALSE  # Removes NA (non-significant) from legend
  ) + 
  geom_hline(yintercept = -log10(0.05), linetype = "dashed") +  
  geom_vline(xintercept = 0, linetype = "dashed") +
  scale_y_continuous(limits = c(0, 4)) +  
  xlab("log2FoldChange") + 
  ylab("-log10(p-value)") +
  guides(color = guide_legend(title = "Phylum")) +  
  theme_minimal()+ 
  annotate("text", x = min(ancombc_rand_table_mag$lfc_time_pointFMT2), y = 4, 
           label = "FMT1", hjust = 0, size = 4, fontface = "bold") +
  annotate("text", x = max(ancombc_rand_table_mag$lfc_time_pointFMT2), y = 4, 
           label = "FMT2", hjust = 1, size = 4, fontface = "bold")

Phyla of the significant MAGs in FMT2

ancombc_rand_table_mag%>%
  filter(p_time_pointFMT2 < 0.05) %>%
  filter(lfc_time_pointFMT2>0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
            phylum sample_count
1      Bacillota_A            8
2     Bacteroidota            6
3   Pseudomonadota            2
4  Cyanobacteriota            1
5 Desulfobacterota            1

Phyla of the significant MAGs in FMT1

ancombc_rand_table_mag%>%
  filter(p_time_pointFMT2 < 0.05) %>%
  filter(lfc_time_pointFMT2<0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
            phylum sample_count
1     Bacteroidota            2
2   Pseudomonadota            2
3        Bacillota            1
4      Bacillota_A            1
5 Campylobacterota            1

15.6.2.2 CC: FMT1 vs FMT2

Structural zeros

struc <- structural_zeros %>% 
  filter(present=="FMT1")%>% 
  count(phylum, name = "FMT1") %>%
  arrange(desc(FMT1))
structural_zeros %>% 
  filter(present=="FMT2")%>% 
  count(phylum, name = "FMT2") %>%
  arrange(desc(FMT2)) %>% 
  full_join(., struc, by="phylum") %>%
  mutate(across(everything(), ~ ifelse(is.na(.), 0, .))) %>% 
  tt()
phylum FMT2 FMT1
p__Bacillota_A 19 6
p__Bacillota 6 4
p__Bacteroidota 6 6
p__Pseudomonadota 6 1
p__Cyanobacteriota 2 0
p__Desulfobacterota 2 1
p__Campylobacterota 1 0
p__Verrucomicrobiota 1 0
p__Actinomycetota 0 1
phylo_samples <- sample_metadata %>%
  filter(type == "Cold_control" & time_point %in% c("FMT1", "FMT2") )%>% 
  column_to_rownames("Tube_code") %>% 
  sample_data()
phylo_genome <- genome_counts_filt %>% 
  filter(!genome %in% structural_zeros$genome) %>% 
  select(one_of(c("genome",rownames(phylo_samples)))) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
  column_to_rownames("genome") %>% 
  otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>% 
  filter(genome %in% rownames(phylo_genome)) %>% 
  column_to_rownames("genome") %>% 
  dplyr::select(domain,phylum,class,order,family,genus,species) %>% 
  as.matrix() %>% 
  tax_table()

physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)
ancom_rand_output_cc_fmt1_FMT2 = ancombc2(data = physeq_genome_filtered, 
                  assay_name = "counts", 
                  tax_level = NULL,
                  fix_formula = "time_point", 
                  p_adj_method = "holm", 
                  pseudo_sens = TRUE,
                  prv_cut =0, 
                  lib_cut = 0, 
                  s0_perc = 0.05,
                  group = NULL, 
                  struc_zero = FALSE, 
                  neg_lb = FALSE,
                  alpha = 0.05, 
                  n_cl = 2, 
                  verbose = TRUE,
                  global = FALSE, 
                  pairwise = FALSE, 
                  dunnet = FALSE, 
                  trend = FALSE,
                  iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
                  em_control = list(tol = 1e-5, max_iter = 100),
                  mdfdr_control = list(fwer_ctrl_method = "holm", B = 100), 
                  trend_control = NULL)
save(ancom_rand_output_cc_fmt1_FMT2, file="data/ancom_rand_output_cc_fmt1_FMT2.RData")
load("data/ancom_rand_output_cc_fmt1_FMT2.RData")
ancom_rand_output_cc_fmt1_FMT2$res %>%
  dplyr::select(taxon, lfc_time_pointFMT2, p_time_pointFMT2) %>%
  filter(p_time_pointFMT2 < 0.05) %>% 
  left_join(., genome_metadata, by=join_by("taxon"=="genome")) %>% 
  select(2,3,7,8,9) %>% 
  tt()  
lfc_time_pointFMT2 p_time_pointFMT2 order family genus
-1.1198010 0.0493049200 o__Gastranaerophilales f__Gastranaerophilaceae g__CALURL01
-1.5062750 0.0097993777 o__Fusobacteriales f__Fusobacteriaceae g__Fusobacterium_A
2.4827509 0.0139900320 o__RF32 f__CAG-239 g__Scatocola
-1.3151251 0.0072517934 o__Lactobacillales f__Streptococcaceae g__Lactococcus
1.4541589 0.0160901321 o__Bacteroidales f__Rikenellaceae g__Alistipes
-0.8116835 0.0444836720 o__Bacteroidales f__Rikenellaceae g__Alistipes
1.1136172 0.0250850121 o__Mycoplasmatales f__Mycoplasmoidaceae g__Mycoplasmoides
-1.3597164 0.0258606282 o__Rhizobiales f__Rhizobiaceae g__Agrobacterium
1.1091976 0.0164391420 o__Gastranaerophilales f__Gastranaerophilaceae g__Limenecus
-0.9340069 0.0351897828 o__Lachnospirales f__Lachnospiraceae g__Clostridium_Q
-1.5761510 0.0087725688 o__Erysipelotrichales f__Erysipelotrichaceae g__NSJ-61
1.6900745 0.0007465451 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
-2.0339744 0.0146779091 o__Bacteroidales f__Marinifilaceae g__Odoribacter
-1.1908959 0.0223022247 o__Coriobacteriales f__Eggerthellaceae g__Eggerthella
1.0462005 0.0272520436 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
-1.1937901 0.0224995923 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
-2.3139776 0.0012671561 o__Lachnospirales f__Lachnospiraceae g__
1.1186724 0.0417965176 o__Lachnospirales f__Lachnospiraceae g__
-2.3220764 0.0118523541 o__Lachnospirales f__Lachnospiraceae g__MGBC136627
-1.7225723 0.0084680239 o__Lachnospirales f__Lachnospiraceae g__
-1.0102405 0.0451494794 o__Erysipelotrichales f__Erysipelotrichaceae g__Dielma
1.0311504 0.0132985344 o__Oscillospirales f__Acutalibacteraceae g__
-3.0528872 0.0006416506 o__Enterobacterales f__Enterobacteriaceae g__Proteus
-2.0779366 0.0016473980 o__Mycoplasmatales f__Mycoplasmoidaceae g__Ureaplasma
-1.6574844 0.0054464826 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
-1.1168025 0.0257358548 o__Oscillospirales f__Oscillospiraceae g__Pseudoflavonifractor
-1.2369578 0.0432727451 o__Peptococcales f__Peptococcaceae g__RGIG6463
-1.1783817 0.0145456364 o__Erysipelotrichales f__Erysipelotrichaceae g__Clostridium_AQ
-1.4329605 0.0047288565 o__Christensenellales f__UBA3700 g__
-1.5111121 0.0031036127 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
-1.1709721 0.0168869815 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
  rownames_to_column(., "taxon") %>%
  mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))

ancombc_rand_table_mag <- ancom_rand_output_cc_fmt1_FMT2$res %>%
  dplyr::select(taxon, lfc_time_pointFMT2, p_time_pointFMT2) %>%
  #filter(p_time_pointFMT2 < 0.05) %>%
  dplyr::arrange(p_time_pointFMT2) %>%
  merge(., taxonomy, by="taxon") %>%
  mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
  dplyr::arrange(lfc_time_pointFMT2)

ancombc_rand_table_mag
                    taxon lfc_time_pointFMT2 p_time_pointFMT2      domain            phylum                  class                order               family
1   LI1_2nd_10:bin_000018        -3.31447169     1.0000000000 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
2    AH1_2nd_7:bin_000010        -3.30303444     1.0000000000 d__Bacteria    Pseudomonadota c__Alphaproteobacteria                 RF32              CAG-239
3    AH1_2nd_7:bin_000003        -3.05288723     0.0006416506 d__Bacteria    Pseudomonadota c__Gammaproteobacteria     Enterobacterales   Enterobacteriaceae
4    AH1_2nd_1:bin_000015        -2.32207639     0.0118523541 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
5   AH1_2nd_19:bin_000072        -2.31397764     0.0012671561 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
6    LI1_2nd_7:bin_000053        -2.20355357     1.0000000000 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
7    AH1_2nd_7:bin_000055        -2.07793661     0.0016473980 d__Bacteria         Bacillota             c__Bacilli      Mycoplasmatales    Mycoplasmoidaceae
8   AH1_2nd_18:bin_000024        -2.03397438     0.0146779091 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Marinifilaceae
9   AH1_2nd_12:bin_000007        -1.92051664     0.1148569150 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
10  AH1_2nd_13:bin_000011        -1.73568911     0.0938536206 d__Bacteria    Pseudomonadota c__Alphaproteobacteria                 RF32              CAG-239
11  AH1_2nd_12:bin_000056        -1.72844265     1.0000000000 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
12   AH1_2nd_1:bin_000023        -1.72257234     0.0084680239 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
13  AH1_2nd_12:bin_000044        -1.66220361     1.0000000000 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
14   AH1_2nd_7:bin_000065        -1.65748441     0.0054464826 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
15   AH1_2nd_5:bin_000073        -1.64486346     1.0000000000 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
16  AH1_2nd_17:bin_000029        -1.57615104     0.0087725688 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
17   AH1_2nd_7:bin_000017        -1.54785328     1.0000000000 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
18   LI1_2nd_7:bin_000078        -1.54732216     0.1079249784 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
19   LI1_2nd_8:bin_000064        -1.51111206     0.0031036127 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
20  AH1_2nd_11:bin_000005        -1.50627502     0.0097993777 d__Bacteria    Fusobacteriota       c__Fusobacteriia      Fusobacteriales     Fusobacteriaceae
21   LI1_2nd_8:bin_000019        -1.43296047     0.0047288565 d__Bacteria       Bacillota_A          c__Clostridia   Christensenellales              UBA3700
22  AH1_2nd_15:bin_000001        -1.35971641     0.0258606282 d__Bacteria    Pseudomonadota c__Alphaproteobacteria          Rhizobiales         Rhizobiaceae
23  AH1_2nd_12:bin_000008        -1.31512515     0.0072517934 d__Bacteria         Bacillota             c__Bacilli      Lactobacillales     Streptococcaceae
24   AH1_2nd_7:bin_000005        -1.25956134     1.0000000000 d__Bacteria       Bacillota_C       c__Negativicutes    Acidaminococcales   Acidaminococcaceae
25   LI1_2nd_1:bin_000006        -1.23695780     0.0432727451 d__Bacteria       Bacillota_B         c__Peptococcia        Peptococcales       Peptococcaceae
26   LI1_2nd_7:bin_000040        -1.22539158     1.0000000000 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
27  AH1_2nd_19:bin_000055        -1.19379006     0.0224995923 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
28  AH1_2nd_18:bin_000040        -1.19089595     0.0223022247 d__Bacteria    Actinomycetota      c__Coriobacteriia     Coriobacteriales      Eggerthellaceae
29   LI1_2nd_4:bin_000003        -1.17899796     1.0000000000 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
30   LI1_2nd_7:bin_000016        -1.17838170     0.0145456364 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
31   LI1_2nd_8:bin_000070        -1.17097215     0.0168869815 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
32  LI1_2nd_10:bin_000017        -1.17083401     1.0000000000 d__Bacteria       Chlamydiota          c__Chlamydiia         Chlamydiales        Chlamydiaceae
33  AH1_2nd_10:bin_000010        -1.11980098     0.0493049200 d__Bacteria   Cyanobacteriota    c__Vampirovibrionia  Gastranaerophilales Gastranaerophilaceae
34   AH1_2nd_7:bin_000070        -1.11680255     0.0257358548 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
35   AH1_2nd_7:bin_000060        -1.08947487     0.0685470015 d__Bacteria       Bacillota_A          c__Clostridia        Eubacteriales       Eubacteriaceae
36  AH1_2nd_10:bin_000049        -1.07227106     0.0608887913 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
37  AH1_2nd_11:bin_000004        -1.02816598     1.0000000000 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
38   AH1_2nd_1:bin_000034        -1.01024051     0.0451494794 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
39   AH1_2nd_7:bin_000036        -0.97686458     0.0502387480 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
40   AH1_2nd_8:bin_000056        -0.97181876     0.1651921805 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
41   LI1_2nd_8:bin_000048        -0.96753496     0.0535034077 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
42   AH1_2nd_8:bin_000051        -0.95370663     0.0693984411 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
43  AH1_2nd_13:bin_000025        -0.93846629     0.2249741347 d__Bacteria       Bacillota_A          c__Clostridia   Christensenellales              UBA3700
44  AH1_2nd_17:bin_000020        -0.93400689     0.0351897828 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
45   AH1_2nd_5:bin_000037        -0.87365532     0.1845172676 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
46  AH1_2nd_14:bin_000052        -0.86717449     0.0577734378 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
47  AH1_2nd_14:bin_000047        -0.81464027     0.0863462400 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
48  AH1_2nd_12:bin_000018        -0.81168355     0.0444836720 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
49  AH1_2nd_19:bin_000053        -0.79618315     0.1992914817 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
50   AH1_2nd_9:bin_000015        -0.79008673     0.0590367473 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
51  AH1_2nd_19:bin_000067        -0.74344044     0.1079809850 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
52  AH1_2nd_15:bin_000013        -0.73243588     0.0721427894 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
53  AH1_2nd_14:bin_000063        -0.70775818     0.0704567904 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
54   LI1_2nd_4:bin_000036        -0.68890291     0.1570833785 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
55   AH1_2nd_5:bin_000001        -0.68335413     0.1397978394 d__Bacteria       Bacillota_C       c__Negativicutes      Selenomonadales                     
56  AH1_2nd_11:bin_000028        -0.68309727     0.1393442971 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
57   LI1_2nd_7:bin_000083        -0.67263526     0.0624737951 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
58   AH1_2nd_7:bin_000027        -0.63326145     0.0916304028 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
59  AH1_2nd_18:bin_000033        -0.58034911     0.0910414298 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales     Coprobacillaceae
60  AH1_2nd_15:bin_000025        -0.54489587     0.2773138343 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
61  AH1_2nd_15:bin_000004        -0.52431642     0.1585491240 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
62   LI1_2nd_8:bin_000033        -0.49339480     0.1388733059 d__Bacteria       Bacillota_C       c__Negativicutes      Selenomonadales                     
63   AH1_2nd_7:bin_000011        -0.48690688     0.2623426363 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
64   AH1_2nd_8:bin_000027        -0.48377973     0.2494601566 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
65  AH1_2nd_16:bin_000045        -0.42231723     0.2208254305 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
66   AH1_2nd_7:bin_000041        -0.39412285     0.2217449601 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
67   AH1_2nd_5:bin_000023        -0.39168227     0.2268615769 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
68   AH1_2nd_7:bin_000006        -0.36796245     0.3870562493 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
69   LI1_2nd_8:bin_000079        -0.35815945     0.3356688947 d__Bacteria    Pseudomonadota c__Gammaproteobacteria     Enterobacterales   Enterobacteriaceae
70  AH1_2nd_20:bin_000027        -0.34093411     1.0000000000 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
71   AH1_2nd_9:bin_000047        -0.32989275     0.3542231990 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
72  AH1_2nd_18:bin_000047        -0.32948170     0.5225406571 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
73   LI1_2nd_4:bin_000041        -0.32846165     0.4400601500 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
74  AH1_2nd_10:bin_000009        -0.28981655     0.4969603940 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
75  AH1_2nd_19:bin_000052        -0.28309357     1.0000000000 d__Bacteria Verrucomicrobiota    c__Verrucomicrobiae           Opitutales                 LL51
76   AH1_2nd_7:bin_000015        -0.27606569     0.5381996058 d__Bacteria    Pseudomonadota c__Alphaproteobacteria                 RF32              CAG-239
77  AH1_2nd_19:bin_000005        -0.27324854     0.5764297852 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
78  AH1_2nd_16:bin_000025        -0.17985833     0.6301171339 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
79   AH1_2nd_6:bin_000060        -0.16640238     1.0000000000 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
80  AH1_2nd_14:bin_000014        -0.13288977     0.6732892235 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales     Oscillospiraceae
81   AH1_2nd_1:bin_000002        -0.10001016     0.8160008029 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
82   AH1_2nd_9:bin_000023        -0.09322763     0.7761682588 d__Bacteria         Bacillota             c__Bacilli                RFN20              CAG-288
83  AH1_2nd_14:bin_000003        -0.08065136     0.8025648786 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
84   AH1_2nd_2:bin_000003        -0.07671427     0.8331360033 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
85  AH1_2nd_14:bin_000032        -0.07653252     0.7839900975 d__Bacteria       Bacillota_C       c__Negativicutes      Selenomonadales   Massilibacillaceae
86  AH1_2nd_12:bin_000012        -0.06274415     0.9057514181 d__Bacteria  Campylobacterota     c__Campylobacteria    Campylobacterales    Helicobacteraceae
87  AH1_2nd_19:bin_000050        -0.05308835     0.8751060207 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
88  AH1_2nd_19:bin_000011        -0.05304033     0.8480588324 d__Bacteria  Desulfobacterota    c__Desulfovibrionia   Desulfovibrionales  Desulfovibrionaceae
89  AH1_2nd_16:bin_000058        -0.01315875     0.9676245603 d__Bacteria       Bacillota_A          c__Clostridia       Lachnospirales      Lachnospiraceae
90   LI1_2nd_7:bin_000042         0.02510172     0.9570955639 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Tannerellaceae
91  AH1_2nd_17:bin_000030         0.02700583     0.9280456712 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
92   AH1_2nd_1:bin_000048         0.05860246     0.8608253440 d__Bacteria       Bacillota_A          c__Clostridia Peptostreptococcales     Anaerovoracaceae
93   AH1_2nd_9:bin_000002         0.08996791     0.8783653508 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
94  AH1_2nd_15:bin_000043         0.09039449     0.7743586547 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
95   LI1_2nd_5:bin_000013         0.09954949     0.7714367370 d__Bacteria       Bacillota_A          c__Clostridia   Christensenellales               DTU072
96  AH1_2nd_18:bin_000039         0.11265387     0.7016435471 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales        Rikenellaceae
97  AH1_2nd_13:bin_000055         0.12595106     1.0000000000 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
98   AH1_2nd_8:bin_000007         0.14324441     0.6584804512 d__Bacteria         Bacillota             c__Bacilli   Erysipelotrichales  Erysipelotrichaceae
99   LI1_2nd_7:bin_000009         0.14984005     0.6315252798 d__Bacteria       Bacillota_A          c__Clostridia      Oscillospirales      Ruminococcaceae
100  AH1_2nd_5:bin_000069         0.16883789     0.7076248426 d__Bacteria      Bacteroidota         c__Bacteroidia        Bacteroidales       Bacteroidaceae
                    genus                       species
1             Bacteroides                              
2                CAJLXD01                              
3                 Proteus              Proteus cibarius
4              MGBC136627                              
5                                                      
6             Bacteroides            Bacteroides nordii
7              Ureaplasma                              
8             Odoribacter                              
9                                                      
10             MGBC133411                              
11          Enterocloster                              
12                                                     
13        Parabacteroides    Parabacteroides distasonis
14        Parabacteroides                              
15        Parabacteroides   Parabacteroides goldsteinii
16                 NSJ-61                              
17               Lawsonia                              
18             Copromonas                              
19        Parabacteroides                              
20        Fusobacterium_A      Fusobacterium_A ulcerans
21                                                     
22          Agrobacterium   Agrobacterium tumefaciens_H
23            Lactococcus       Lactococcus formosensis
24  Phascolarctobacterium Phascolarctobacterium faecium
25               RGIG6463                              
26                                                     
27        Parabacteroides                              
28            Eggerthella                              
29                 Dielma                              
30         Clostridium_AQ                              
31            Bacteroides                              
32                                                     
33               CALURL01                              
34   Pseudoflavonifractor                              
35            Eubacterium                              
36        Parabacteroides                              
37           Hungatella_A                              
38                 Dielma                              
39         Intestinimonas                              
40            Bacteroides                              
41                                                     
42            Bacteroides                              
43                                                     
44          Clostridium_Q                              
45   Pseudoflavonifractor                              
46            Bacteroides                              
47            Bacteroides                              
48              Alistipes                              
49                 CAG-56                              
50          Desulfovibrio                              
51            Bacteroides            Bacteroides ovatus
52            Ventrimonas                              
53              Blautia_A                              
54                                                     
55                                                     
56            Bacteroides                              
57   Pseudoflavonifractor                              
58             Copromonas                              
59                Beduini                              
60            Phocaeicola                              
61               UMGS1251                              
62                                                     
63           Lacrimispora                              
64                 NSJ-61                              
65              Alistipes                              
66                                                     
67                Blautia                              
68               JALFVM01                              
69          Citrobacter_A    Citrobacter_A amalonaticus
70          Desulfovibrio                              
71            Bacteroides                              
72        Parabacteroides                              
73          Clostridium_Q                              
74              Bilophila                              
75                                                     
76                 CAZU01                              
77              Roseburia                              
78       Negativibacillus                              
79         Intestinimonas                              
80        Marseille-P3106                              
81           Fournierella                              
82                CAG-345                              
83           Hungatella_A                              
84               JAAYNV01                              
85                                                     
86         Helicobacter_J                              
87                                                     
88              Mailhella                              
89          Enterocloster                              
90      Parabacteroides_B                              
91            Bacteroides                              
92                                                     
93            Phocaeicola                              
94            Bacteroides                              
95                                                     
96              Alistipes                              
97            Bacteroides        Bacteroides fragilis_B
98                 Dielma                              
99          Anaerotruncus                              
100           Bacteroides                              
 [ reached 'max' / getOption("max.print") -- omitted 25 rows ]
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
  mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", ""))  %>%
  right_join(taxonomy, by=join_by(phylum == phylum)) %>%
  dplyr::select(phylum, colors) %>%
  mutate(colors = str_c(colors, "80"))  %>% #add 80% alpha
    unique() %>%
    dplyr::arrange(phylum)

tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
  
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
    dplyr::arrange(phylum) %>%
    dplyr::select(colors) %>%
    pull()
ancombc_rand_table_mag %>%
  mutate(
    genome = factor(taxon, levels = ancombc_rand_table_mag$taxon),
    significance = ifelse(p_time_pointFMT2 < 0.05, phylum, NA)  # Set non-significant to NA (not mapped in legend)
  ) %>%
  ggplot() +
  # Plot significant points with legend
  geom_point(aes(x = lfc_time_pointFMT2, y = -log10(p_time_pointFMT2), color = significance), 
             size = 3, alpha = 0.7, na.rm = TRUE) +  
  # Plot non-significant points separately without legend
  geom_point(data = filter(ancombc_rand_table_mag, p_time_pointFMT2 >= 0.05),
             aes(x = lfc_time_pointFMT2, y = -log10(p_time_pointFMT2)), 
             color = "grey70", size = 3, alpha = 0.7, show.legend = FALSE) +
  scale_color_manual(
    values = tax_color,  # Only keeps phylum colors in legend
    na.translate = FALSE  # Removes NA (non-significant) from legend
  ) + 
  geom_hline(yintercept = -log10(0.05), linetype = "dashed") +  
  geom_vline(xintercept = 0, linetype = "dashed") +
  scale_y_continuous(limits = c(0, 4)) +  
  xlab("log2FoldChange") + 
  ylab("-log10(p-value)") +
  guides(color = guide_legend(title = "Phylum")) +  
  theme_minimal()+ 
  annotate("text", x = min(ancombc_rand_table_mag$lfc_time_pointFMT2), y = 4, 
           label = "FMT1", hjust = 0, size = 4, fontface = "bold") +
  annotate("text", x = max(ancombc_rand_table_mag$lfc_time_pointFMT2), y = 4, 
           label = "FMT2", hjust = 1, size = 4, fontface = "bold")

Phyla of the significant MAGs in FMT2

ancombc_rand_table_mag%>%
  filter(p_time_pointFMT2 < 0.05) %>%
  filter(lfc_time_pointFMT2>0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
           phylum sample_count
1    Bacteroidota            3
2     Bacillota_A            2
3       Bacillota            1
4 Cyanobacteriota            1
5  Pseudomonadota            1

Phyla of the significant MAGs in FMT1

ancombc_rand_table_mag%>%
  filter(p_time_pointFMT2 < 0.05) %>%
  filter(lfc_time_pointFMT2<0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
           phylum sample_count
1     Bacillota_A            6
2    Bacteroidota            6
3       Bacillota            5
4  Pseudomonadota            2
5  Actinomycetota            1
6     Bacillota_B            1
7 Cyanobacteriota            1
8  Fusobacteriota            1

15.6.2.3 WC: FMT1 vs FMT2

Structural zeros

struc <- structural_zeros %>% 
  filter(present=="FMT1")%>% 
  count(phylum, name = "FMT1") %>%
  arrange(desc(FMT1))
structural_zeros %>% 
  filter(present=="FMT2")%>% 
  count(phylum, name = "FMT2") %>%
  arrange(desc(FMT2)) %>% 
  full_join(., struc, by="phylum") %>%
  mutate(across(everything(), ~ ifelse(is.na(.), 0, .))) %>% 
  tt()
phylum FMT2 FMT1
p__Bacillota_A 12 13
p__Bacteroidota 8 3
p__Bacillota 4 5
p__Pseudomonadota 4 1
p__Cyanobacteriota 3 0
p__Desulfobacterota 2 0
p__Verrucomicrobiota 2 0
p__Bacillota_B 1 0
p__Bacillota_C 0 1
phylo_samples <- sample_metadata %>%
  filter(type == "Warm_control" & time_point %in% c("FMT1", "FMT2") )%>% 
  column_to_rownames("Tube_code") %>% 
  sample_data()
phylo_genome <- genome_counts_filt %>% 
  filter(!genome %in% structural_zeros$genome) %>% 
  select(one_of(c("genome",rownames(phylo_samples)))) %>%
  filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
  select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
  column_to_rownames("genome") %>% 
  otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>% 
  filter(genome %in% rownames(phylo_genome)) %>% 
  column_to_rownames("genome") %>% 
  dplyr::select(domain,phylum,class,order,family,genus,species) %>% 
  as.matrix() %>% 
  tax_table()

physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)
ancom_rand_output_wc_fmt1_FMT2 = ancombc2(data = physeq_genome_filtered, 
                  assay_name = "counts", 
                  tax_level = NULL,
                  fix_formula = "time_point", 
                  p_adj_method = "holm", 
                  pseudo_sens = TRUE,
                  prv_cut =0, 
                  lib_cut = 0, 
                  s0_perc = 0.05,
                  group = NULL, 
                  struc_zero = FALSE, 
                  neg_lb = FALSE,
                  alpha = 0.05, 
                  n_cl = 2, 
                  verbose = TRUE,
                  global = FALSE, 
                  pairwise = FALSE, 
                  dunnet = FALSE, 
                  trend = FALSE,
                  iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
                  em_control = list(tol = 1e-5, max_iter = 100),
                  mdfdr_control = list(fwer_ctrl_method = "holm", B = 100), 
                  trend_control = NULL)
save(ancom_rand_output_wc_fmt1_FMT2, file="data/ancom_rand_output_wc_fmt1_FMT2.RData")
load("data/ancom_rand_output_wc_fmt1_FMT2.RData")
ancom_rand_output_wc_fmt1_FMT2$res %>%
  dplyr::select(taxon, lfc_time_pointFMT2, p_time_pointFMT2) %>%
  filter(p_time_pointFMT2 < 0.05) %>% 
  left_join(., genome_metadata, by=join_by("taxon"=="genome")) %>% 
  select(2,3,7,8,9) %>% 
  tt()  
lfc_time_pointFMT2 p_time_pointFMT2 order family genus
1.2537325 0.029011593 o__Gastranaerophilales f__Gastranaerophilaceae g__Limenecus
-1.2446218 0.020897418 o__Fusobacteriales f__Fusobacteriaceae g__Fusobacterium_A
-1.3152584 0.044543573 o__Campylobacterales f__Helicobacteraceae g__Helicobacter_J
-0.8821247 0.029330809 o__Lachnospirales f__Lachnospiraceae g__UMGS1251
1.0370118 0.034798957 o__Bacteroidales f__Marinifilaceae g__Odoribacter
-1.4081841 0.011345341 o__Erysipelotrichales f__Coprobacillaceae g__Coprobacillus
-1.1775932 0.019499011 o__Erysipelotrichales f__Erysipelotrichaceae g__
1.3523455 0.016477167 o__Desulfovibrionales f__Desulfovibrionaceae g__Desulfovibrio
1.3457840 0.022072106 o__Christensenellales f__UBA1242 g__
-1.7017766 0.009626807 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
1.2803273 0.043789286 o__Acidaminococcales f__Acidaminococcaceae g__Phascolarctobacterium
-1.3245581 0.011056770 o__Bacteroidales f__Tannerellaceae g__Parabacteroides
1.3062379 0.019865974 o__Bacteroidales f__Marinifilaceae g__Odoribacter
1.3245459 0.013082061 o__UBA3830 f__UBA3830 g__
-1.5592978 0.025407224 o__Enterobacterales f__Enterobacteriaceae g__Proteus
-1.0812434 0.013919048 o__Lachnospirales f__Lachnospiraceae g__Eisenbergiella
-1.0099994 0.023380577 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
-1.2817587 0.001367698 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
-1.1580560 0.033213580 o__Chlamydiales f__Chlamydiaceae g__
0.6998666 0.026257063 o__Christensenellales f__MGBC116941 g__MGBC116941
1.5483904 0.002502672 o__Christensenellales f__ g__
-0.9563076 0.039772629 o__Oscillospirales f__Ruminococcaceae g__Anaerotruncus
2.3773896 0.015636768 o__Lachnospirales f__Lachnospiraceae g__14-2
-0.9161289 0.047763615 o__Bacteroidales f__Rikenellaceae g__Alistipes
-0.9044651 0.026634644 o__Oscillospirales f__Ruminococcaceae g__Fournierella
1.4541016 0.030212531 o__Bacteroidales f__Tannerellaceae g__Parabacteroides_B
-1.0124184 0.011201437 o__Lachnospirales f__Lachnospiraceae g__
-0.9084867 0.028859672 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
-0.7064750 0.043580530 o__Lachnospirales f__Lachnospiraceae g__Copromonas
-0.7714674 0.029067625 o__Oscillospirales f__Oscillospiraceae g__Pseudoflavonifractor
1.5835649 0.022738074 o__Bacteroidales f__Rikenellaceae g__Alistipes
-1.8505816 0.008115738 o__Christensenellales f__UBA3700 g__
-1.1895271 0.015730598 o__Bacteroidales f__Bacteroidaceae g__Bacteroides
-1.4689203 0.016641038 o__RF32 f__CAG-239 g__CAJLXD01
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
  rownames_to_column(., "taxon") %>%
  mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))

ancombc_rand_table_mag <- ancom_rand_output_wc_fmt1_FMT2$res %>%
  dplyr::select(taxon, lfc_time_pointFMT2, p_time_pointFMT2) %>%
  #filter(p_time_pointFMT2 < 0.05) %>%
  dplyr::arrange(p_time_pointFMT2) %>%
  merge(., taxonomy, by="taxon") %>%
  mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
  dplyr::arrange(lfc_time_pointFMT2)

ancombc_rand_table_mag
                    taxon lfc_time_pointFMT2 p_time_pointFMT2      domain           phylum                  class               order               family
1   AH1_2nd_20:bin_000073      -4.3031988137      1.000000000 d__Bacteria        Bacillota             c__Bacilli     Lactobacillales      Enterococcaceae
2   AH1_2nd_10:bin_000097      -2.9177223471      0.054500702 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
3    LI1_2nd_8:bin_000019      -1.8505816492      0.008115738 d__Bacteria      Bacillota_A          c__Clostridia  Christensenellales              UBA3700
4   AH1_2nd_20:bin_000087      -1.7017766044      0.009626807 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
5    AH1_2nd_7:bin_000003      -1.5592978126      0.025407224 d__Bacteria   Pseudomonadota c__Gammaproteobacteria    Enterobacterales   Enterobacteriaceae
6   AH1_2nd_20:bin_000054      -1.5356765029      0.102478288 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales  Erysipelotrichaceae
7    LI1_2nd_9:bin_000007      -1.4689203460      0.016641038 d__Bacteria   Pseudomonadota c__Alphaproteobacteria                RF32              CAG-239
8    LI1_2nd_7:bin_000074      -1.4189759202      1.000000000 d__Bacteria   Pseudomonadota c__Gammaproteobacteria    Enterobacterales   Enterobacteriaceae
9   AH1_2nd_18:bin_000011      -1.4081841124      0.011345341 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales     Coprobacillaceae
10   AH1_2nd_5:bin_000016      -1.3273362400      1.000000000 d__Bacteria        Bacillota             c__Bacilli     Lactobacillales      Enterococcaceae
11   AH1_2nd_5:bin_000073      -1.3245580585      0.011056770 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
12  AH1_2nd_12:bin_000012      -1.3152584353      0.044543573 d__Bacteria Campylobacterota     c__Campylobacteria   Campylobacterales    Helicobacteraceae
13   AH1_2nd_9:bin_000047      -1.2817587079      0.001367698 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
14  AH1_2nd_11:bin_000028      -1.2753871418      0.062137752 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
15  AH1_2nd_11:bin_000005      -1.2446217932      0.020897418 d__Bacteria   Fusobacteriota       c__Fusobacteriia     Fusobacteriales     Fusobacteriaceae
16   LI1_2nd_7:bin_000008      -1.1951326928      1.000000000 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales  Erysipelotrichaceae
17   LI1_2nd_8:bin_000070      -1.1895270540      0.015730598 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
18  AH1_2nd_20:bin_000016      -1.1775932446      0.019499011 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales  Erysipelotrichaceae
19  LI1_2nd_10:bin_000017      -1.1580559813      0.033213580 d__Bacteria      Chlamydiota          c__Chlamydiia        Chlamydiales        Chlamydiaceae
20   LI1_2nd_7:bin_000019      -1.1124294235      0.149183516 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Marinifilaceae
21   AH1_2nd_7:bin_000004      -1.0812434267      0.013919048 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
22   LI1_2nd_4:bin_000034      -1.0225200893      0.083242968 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
23   LI1_2nd_7:bin_000040      -1.0124183513      0.011201437 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
24   AH1_2nd_8:bin_000051      -1.0099993618      0.023380577 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
25  AH1_2nd_16:bin_000023      -0.9686001201      0.085015012 d__Bacteria      Bacillota_A          c__Clostridia  Christensenellales              UBA3700
26  AH1_2nd_10:bin_000010      -0.9585647370      1.000000000 d__Bacteria  Cyanobacteriota    c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
27   LI1_2nd_7:bin_000009      -0.9563075978      0.039772629 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales      Ruminococcaceae
28   LI1_2nd_5:bin_000023      -0.9417497581      0.168204326 d__Bacteria   Pseudomonadota c__Alphaproteobacteria             UBA3830                     
29  AH1_2nd_12:bin_000014      -0.9339127523      1.000000000 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
30   AH1_2nd_5:bin_000069      -0.9174656405      0.082673726 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
31   LI1_2nd_7:bin_000012      -0.9161289400      0.047763615 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales        Rikenellaceae
32   LI1_2nd_7:bin_000053      -0.9084866848      0.028859672 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
33   LI1_2nd_7:bin_000033      -0.9044651107      0.026634644 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales      Ruminococcaceae
34  AH1_2nd_15:bin_000004      -0.8821246987      0.029330809 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
35  AH1_2nd_13:bin_000025      -0.8680263775      0.129315742 d__Bacteria      Bacillota_A          c__Clostridia  Christensenellales              UBA3700
36  AH1_2nd_15:bin_000025      -0.8595055764      0.088893219 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
37   AH1_2nd_1:bin_000023      -0.8485566793      0.051298337 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
38   AH1_2nd_1:bin_000002      -0.8298286581      0.055203715 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales      Ruminococcaceae
39  AH1_2nd_20:bin_000014      -0.7873319956      0.266163546 d__Bacteria   Pseudomonadota c__Gammaproteobacteria    Enterobacterales   Enterobacteriaceae
40   LI1_2nd_7:bin_000083      -0.7714673775      0.029067625 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales     Oscillospiraceae
41   LI1_2nd_7:bin_000016      -0.7641368208      0.174649325 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales  Erysipelotrichaceae
42  AH1_2nd_19:bin_000055      -0.7482250502      0.085497939 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
43  AH1_2nd_16:bin_000096      -0.7135495542      0.058885195 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales      Ruminococcaceae
44   AH1_2nd_7:bin_000011      -0.7111546798      0.085242927 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
45   LI1_2nd_7:bin_000078      -0.7064750075      0.043580530 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
46  AH1_2nd_15:bin_000043      -0.6930651633      0.136980899 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
47   LI1_2nd_4:bin_000052      -0.6854029500      0.060051814 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
48   AH1_2nd_7:bin_000055      -0.6850687136      0.093901218 d__Bacteria        Bacillota             c__Bacilli     Mycoplasmatales    Mycoplasmoidaceae
49   LI1_2nd_7:bin_000014      -0.6837208048      0.071808537 d__Bacteria     Bacteroidota         c__Bacteroidia    Flavobacteriales              UBA1820
50   LI1_2nd_4:bin_000024      -0.6714280076      0.134833378 d__Bacteria      Bacillota_A          c__Clostridia  Christensenellales              UBA3700
51   LI1_2nd_2:bin_000019      -0.6571501446      0.271447473 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
52   LI1_2nd_9:bin_000023      -0.5650076735      0.145237827 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
53   LI1_2nd_8:bin_000033      -0.5604123019      0.074391308 d__Bacteria      Bacillota_C       c__Negativicutes     Selenomonadales                     
54   LI1_2nd_6:bin_000001      -0.5557966817      0.255666657 d__Bacteria   Pseudomonadota c__Gammaproteobacteria    Enterobacterales   Enterobacteriaceae
55   AH1_2nd_5:bin_000023      -0.5386669928      0.153233560 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
56   LI1_2nd_4:bin_000041      -0.4991025577      1.000000000 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
57   LI1_2nd_9:bin_000004      -0.4951898723      0.240711578 d__Bacteria  Cyanobacteriota    c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
58   AH1_2nd_6:bin_000024      -0.4873530110      1.000000000 d__Bacteria    Spirochaetota        c__Brevinematia      Brevinematales      Brevinemataceae
59   AH1_2nd_6:bin_000046      -0.4829259194      0.390146506 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
60   AH1_2nd_7:bin_000070      -0.4798046567      0.111090695 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales     Oscillospiraceae
61  AH1_2nd_12:bin_000015      -0.4686515200      0.304069497 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales     Coprobacillaceae
62   LI1_2nd_4:bin_000003      -0.4551253434      0.250500125 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales  Erysipelotrichaceae
63   AH1_2nd_9:bin_000002      -0.4142956179      0.355256761 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
64  AH1_2nd_16:bin_000020      -0.4072297079      0.297339585 d__Bacteria Desulfobacterota    c__Desulfovibrionia  Desulfovibrionales  Desulfovibrionaceae
65  AH1_2nd_16:bin_000019      -0.4040600464      0.412451844 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales        Rikenellaceae
66  AH1_2nd_15:bin_000001      -0.3959369539      0.378170117 d__Bacteria   Pseudomonadota c__Alphaproteobacteria         Rhizobiales         Rhizobiaceae
67   AH1_2nd_7:bin_000041      -0.3720974135      0.233995336 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
68  AH1_2nd_17:bin_000020      -0.3428926657      0.374303135 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
69   LI1_2nd_7:bin_000042      -0.3142829889      0.438513826 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
70  AH1_2nd_18:bin_000033      -0.3066546643      0.300775791 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales     Coprobacillaceae
71   AH1_2nd_7:bin_000005      -0.3006930108      1.000000000 d__Bacteria      Bacillota_C       c__Negativicutes   Acidaminococcales   Acidaminococcaceae
72   LI1_2nd_7:bin_000005      -0.2826849504      0.444682537 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
73   LI1_2nd_8:bin_000038      -0.2790072396      0.381747791 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
74  AH1_2nd_16:bin_000064      -0.2750516645      0.348255452 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales     Oscillospiraceae
75   AH1_2nd_2:bin_000001      -0.2671760587      0.392465811 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
76   AH1_2nd_2:bin_000017      -0.2223616407      0.555717283 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
77   LI1_2nd_1:bin_000014      -0.2198453312      0.424958273 d__Bacteria Desulfobacterota    c__Desulfovibrionia  Desulfovibrionales  Desulfovibrionaceae
78  LI1_2nd_10:bin_000018      -0.2155836875      0.582444800 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
79   LI1_2nd_8:bin_000064      -0.2086630872      0.627760308 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
80  AH1_2nd_16:bin_000018      -0.1829930923      0.682269260 d__Bacteria      Bacillota_A          c__Clostridia  Christensenellales              UBA3700
81   LI1_2nd_8:bin_000079      -0.1651060341      0.667068837 d__Bacteria   Pseudomonadota c__Gammaproteobacteria    Enterobacterales   Enterobacteriaceae
82   AH1_2nd_1:bin_000003      -0.1645008520      0.628676599 d__Bacteria  Cyanobacteriota    c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
83  AH1_2nd_14:bin_000032      -0.1565957729      0.643080579 d__Bacteria      Bacillota_C       c__Negativicutes     Selenomonadales   Massilibacillaceae
84  AH1_2nd_14:bin_000003      -0.1550162157      0.589569846 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
85  AH1_2nd_18:bin_000024      -0.1302382471      0.676600401 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Marinifilaceae
86   AH1_2nd_6:bin_000062      -0.1280137213      0.670802793 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Muribaculaceae
87  AH1_2nd_10:bin_000049      -0.1268983662      0.735417633 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Tannerellaceae
88   AH1_2nd_6:bin_000060      -0.1136227986      0.672787513 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales     Oscillospiraceae
89  AH1_2nd_11:bin_000004      -0.0844829680      0.792385740 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
90   LI1_2nd_3:bin_000007      -0.0607462596      0.855862610 d__Bacteria        Bacillota             c__Bacilli  Erysipelotrichales  Erysipelotrichaceae
91  AH1_2nd_13:bin_000011      -0.0512873835      0.901434898 d__Bacteria   Pseudomonadota c__Alphaproteobacteria                RF32              CAG-239
92  AH1_2nd_20:bin_000042      -0.0451252887      0.896928901 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
93  AH1_2nd_14:bin_000014      -0.0428104853      0.883994440 d__Bacteria      Bacillota_A          c__Clostridia     Oscillospirales     Oscillospiraceae
94   LI1_2nd_8:bin_000016      -0.0289267155      0.921023221 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales        Rikenellaceae
95   AH1_2nd_8:bin_000006      -0.0236498925      0.958712200 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
96   LI1_2nd_4:bin_000036      -0.0006469469      0.998617628 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales       Bacteroidaceae
97  AH1_2nd_20:bin_000008      -0.0005517028      0.998506814 d__Bacteria     Bacteroidota         c__Bacteroidia       Bacteroidales        Rikenellaceae
98  AH1_2nd_15:bin_000009       0.0469550383      0.905872496 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
99   LI1_2nd_8:bin_000048       0.0655156195      0.830117302 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
100  AH1_2nd_7:bin_000027       0.0702534166      0.834430212 d__Bacteria      Bacillota_A          c__Clostridia      Lachnospirales      Lachnospiraceae
                    genus                       species
1            Enterococcus      Enterococcus sp002174455
2         Parabacteroides                              
3                                                      
4         Parabacteroides      Parabacteroides gordonii
5                 Proteus              Proteus cibarius
6                  NSJ-61                              
7                CAJLXD01                              
8             Escherichia              Escherichia coli
9           Coprobacillus                              
10         Enterococcus_B         Enterococcus_B pernyi
11        Parabacteroides   Parabacteroides goldsteinii
12         Helicobacter_J                              
13            Bacteroides                              
14            Bacteroides                              
15        Fusobacterium_A      Fusobacterium_A ulcerans
16              Breznakia                              
17            Bacteroides                              
18                                                     
19                                                     
20          Butyricimonas                              
21         Eisenbergiella                              
22            Bacteroides  Bacteroides thetaiotaomicron
23                                                     
24            Bacteroides                              
25                                                     
26               CALURL01                              
27          Anaerotruncus                              
28                                                     
29        Velocimicrobium                              
30            Bacteroides                              
31              Alistipes                              
32            Bacteroides            Bacteroides nordii
33           Fournierella                              
34               UMGS1251                              
35                                                     
36            Phocaeicola                              
37                                                     
38           Fournierella                              
39            Citrobacter     Citrobacter portucalensis
40   Pseudoflavonifractor                              
41         Clostridium_AQ                              
42        Parabacteroides                              
43       Ruthenibacterium                              
44           Lacrimispora                              
45             Copromonas                              
46            Bacteroides                              
47          Enterocloster                              
48             Ureaplasma                              
49            Merdimorpha                              
50                                                     
51           Lacrimispora                              
52               JALFVM01                              
53                                                     
54             Salmonella           Salmonella enterica
55                Blautia                              
56          Clostridium_Q                              
57              Scatousia                              
58              Brevinema                              
59            Bacteroides                              
60   Pseudoflavonifractor                              
61         Thomasclavelia                              
62                 Dielma                              
63            Phocaeicola                              
64              Bilophila                              
65              Alistipes                              
66          Agrobacterium   Agrobacterium tumefaciens_H
67                                                     
68          Clostridium_Q                              
69      Parabacteroides_B                              
70                Beduini                              
71  Phascolarctobacterium Phascolarctobacterium faecium
72            Ventrimonas                              
73          Clostridium_Q                              
74            Scatomorpha                              
75                                                     
76             Copromonas                              
77                                                     
78            Bacteroides                              
79        Parabacteroides                              
80                                                     
81          Citrobacter_A    Citrobacter_A amalonaticus
82              Scatousia                              
83                                                     
84           Hungatella_A                              
85            Odoribacter                              
86               HGM05232                              
87        Parabacteroides                              
88         Intestinimonas                              
89           Hungatella_A                              
90                   C-19                              
91             MGBC133411                              
92             Hungatella                              
93        Marseille-P3106                              
94              Rikenella                              
95                 CAG-95                              
96                                                     
97              Alistipes                              
98          Acetatifactor                              
99                                                     
100            Copromonas                              
 [ reached 'max' / getOption("max.print") -- omitted 59 rows ]
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
  mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", ""))  %>%
  right_join(taxonomy, by=join_by(phylum == phylum)) %>%
  dplyr::select(phylum, colors) %>%
  mutate(colors = str_c(colors, "80"))  %>% #add 80% alpha
    unique() %>%
    dplyr::arrange(phylum)

tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
  
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
    dplyr::arrange(phylum) %>%
    dplyr::select(colors) %>%
    pull()
ancombc_rand_table_mag %>%
  mutate(
    genome = factor(taxon, levels = ancombc_rand_table_mag$taxon),
    significance = ifelse(p_time_pointFMT2 < 0.05, phylum, NA)  # Set non-significant to NA (not mapped in legend)
  ) %>%
  ggplot() +
  # Plot significant points with legend
  geom_point(aes(x = lfc_time_pointFMT2, y = -log10(p_time_pointFMT2), color = significance), 
             size = 3, alpha = 0.7, na.rm = TRUE) +  
  # Plot non-significant points separately without legend
  geom_point(data = filter(ancombc_rand_table_mag, p_time_pointFMT2 >= 0.05),
             aes(x = lfc_time_pointFMT2, y = -log10(p_time_pointFMT2)), 
             color = "grey70", size = 3, alpha = 0.7, show.legend = FALSE) +
  scale_color_manual(
    values = tax_color,  # Only keeps phylum colors in legend
    na.translate = FALSE  # Removes NA (non-significant) from legend
  ) + 
  geom_hline(yintercept = -log10(0.05), linetype = "dashed") +  
  geom_vline(xintercept = 0, linetype = "dashed") +
  scale_y_continuous(limits = c(0, 4)) +  
  xlab("log2FoldChange") + 
  ylab("-log10(p-value)") +
  guides(color = guide_legend(title = "Phylum")) +  
  theme_minimal()+ 
  annotate("text", x = min(ancombc_rand_table_mag$lfc_time_pointFMT2), y = 4, 
           label = "FMT1", hjust = 0, size = 4, fontface = "bold") +
  annotate("text", x = max(ancombc_rand_table_mag$lfc_time_pointFMT2), y = 4, 
           label = "FMT2", hjust = 1, size = 4, fontface = "bold")

Phyla of the significant MAGs in FMT2

ancombc_rand_table_mag%>%
  filter(p_time_pointFMT2 < 0.05) %>%
  filter(lfc_time_pointFMT2>0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
            phylum sample_count
1      Bacillota_A            4
2     Bacteroidota            4
3      Bacillota_C            1
4  Cyanobacteriota            1
5 Desulfobacterota            1
6   Pseudomonadota            1

Phyla of the significant MAGs in FMT1

ancombc_rand_table_mag%>%
  filter(p_time_pointFMT2 < 0.05) %>%
  filter(lfc_time_pointFMT2<0)  %>% 
  count(phylum, name = "sample_count") %>%
  arrange(desc(sample_count))  
            phylum sample_count
1      Bacillota_A            8
2     Bacteroidota            7
3        Bacillota            2
4   Pseudomonadota            2
5 Campylobacterota            1
6      Chlamydiota            1
7   Fusobacteriota            1